跳过32帧!该应用程序可能会做太多的工作在其主线程,然后致命异常:主要 [英] Skipped 32 frames! The application may be doing too much work on its main thread and then FATAL EXCEPTION: main

查看:519
本文介绍了跳过32帧!该应用程序可能会做太多的工作在其主线程,然后致命异常:主要的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是新到Android编程。我正在开发Android应用程序。 DashboardGridActivity是一个主要活动。这项活动应该显示在这个应用程序的启动网格视图。
以下是从我的应用程序文件:

I am new to android programming. I am developing an android app. DashboardGridActivity is a main activity. This activity should show grid view on launching of this app. Following are files from my app:

DashboardGridActivity:

DashboardGridActivity:

public class DashboardGridActivity extends Activity {

GridView myDashboard;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_dashboard_grid);
    myDashboard = (GridView)findViewById(R.id.dashboard);
    myDashboard.setAdapter(new DashboardAdapter(this));

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.dashboard_grid, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
  }
}

class ViewHolder
{
    ImageView myItem;
    ViewHolder(View v)
    {
        myItem = (ImageView) v.findViewById(R.id.imageView1);
    }
}

class DashboardItems
{
    int imageID;
    String itemName;
    DashboardItems(int imageID, String itemName)
    {
        this. imageID=imageID;
        this.itemName= itemName;
    }
}

class DashboardAdapter extends BaseAdapter
{
    ArrayList<DashboardItems> dashboardImages;
    Context context;
    DashboardAdapter(Context context)
    {
        dashboardImages = new ArrayList<DashboardItems>();
        Resources res = context.getResources();
        String[] tempDashItems = res.getStringArray(R.array.dashboard_names);
        int[] dashImages = {R.drawable.apartments, R.drawable.atms, R.drawable.banks, R.drawable.book_stores, R.drawable.car_rentals, R.drawable.furniture_shops, R.drawable.gas_stations, R.drawable.gyms, R.drawable.malls, R.drawable.mobile_shops, R.drawable.pharmacy, R.drawable.pizza_places, R.drawable.postal_services, R.drawable.restaurants, R.drawable.subs_burgers, R.drawable.supermarkets, R.drawable.theatres};
        for(int i=0;i<10;i++)
        {
            DashboardItems tempDash = new DashboardItems(dashImages[i],tempDashItems[i]);
            dashboardImages.add(tempDash);
        }
    }
@Override
public int getCount() {
    return dashboardImages.size();
}

@Override
public Object getItem(int i) {
    return dashboardImages.get(i);
}

@Override
public long getItemId(int i) {
    return i;
}

@Override
public View getView(int i, View view, ViewGroup viewGroup) {
    View row= view;
    ViewHolder holder = null;
    if(row==null)
    {
        LayoutInflater inflater =(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        row = inflater.inflate(R.layout.single_item, viewGroup, false);
        holder=new ViewHolder(row);
        row.setTag(holder);
    }
    else
    {
        holder = (ViewHolder) row.getTag();
    }
    DashboardItems temp = dashboardImages.get(i);
    holder.myItem.setImageResource(temp.imageID);
    return row;
  }
}

ativity_dashboard_grid.xml:

ativity_dashboard_grid.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="asm.offcampusresources.app.OffCampusResourcesActivity">


<GridView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/dashboard"
    android:layout_alignParentTop="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentBottom="true"
    android:numColumns="auto_fit"
    android:horizontalSpacing="10dp"
    android:verticalSpacing="10dp"
    android:columnWidth="120dp"
    android:stretchMode="spacingWidthUniform"/>

</RelativeLayout>

single_item.xml:

single_item.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">

<ImageView
    android:id="@+id/imageView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:contentDescription="@string/desc"/>

</RelativeLayout>

当我试图在模拟器中运行这个它给消息不幸的是DashboardGridActivity已停止工作

When I am trying to run this on Emulator it gives message "Unfortunately DashboardGridActivity has stopped working"

在LogCat中,我得到以下信息:

In LogCat I get following messages:

    04-10 20:53:37.901: I/Choreographer(1144): Skipped 32 frames!  The application may be doing too much work on its main thread.
04-10 20:53:38.031: D/AndroidRuntime(1144): Shutting down VM
04-10 20:53:38.031: W/dalvikvm(1144): threadid=1: thread exiting with uncaught exception (group=0xb2a2dba8)
04-10 20:53:38.291: D/dalvikvm(1144): GC_FOR_ALLOC freed 76K, 5% free 3131K/3280K, paused 108ms, total 109ms
04-10 20:53:38.301: E/AndroidRuntime(1144): FATAL EXCEPTION: main
04-10 20:53:38.301: E/AndroidRuntime(1144): Process: asm.offcampusresdemo, PID: 1144
04-10 20:53:38.301: E/AndroidRuntime(1144): java.lang.NullPointerException
04-10 20:53:38.301: E/AndroidRuntime(1144):     at asm.offcampusresdemo.DashboardAdapter.getView(DashboardGridActivity.java:118)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.widget.AbsListView.obtainView(AbsListView.java:2263)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.widget.GridView.onMeasure(GridView.java:1044)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.view.View.measure(View.java:16497)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:719)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:455)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.view.View.measure(View.java:16497)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.view.View.measure(View.java:16497)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:327)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.view.View.measure(View.java:16497)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2291)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.view.View.measure(View.java:16497)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1916)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1113)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1295)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1000)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5670)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.view.Choreographer.doCallbacks(Choreographer.java:574)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.view.Choreographer.doFrame(Choreographer.java:544)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.os.Handler.handleCallback(Handler.java:733)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.os.Handler.dispatchMessage(Handler.java:95)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.os.Looper.loop(Looper.java:136)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.app.ActivityThread.main(ActivityThread.java:5017)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at java.lang.reflect.Method.invokeNative(Native Method)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at java.lang.reflect.Method.invoke(Method.java:515)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at dalvik.system.NativeStart.main(Native Method)
04-10 20:53:53.171: I/Process(1144): Sending signal. PID: 1144 SIG: 9
04-10 20:54:03.361: D/AndroidRuntime(1169): Shutting down VM
04-10 20:54:03.361: W/dalvikvm(1169): threadid=1: thread exiting with uncaught exception (group=0xb2a2dba8)
04-10 20:54:03.471: D/dalvikvm(1169): GC_FOR_ALLOC freed 79K, 5% free 3131K/3284K, paused 40ms, total 43ms
04-10 20:54:03.481: E/AndroidRuntime(1169): FATAL EXCEPTION: main
04-10 20:54:03.481: E/AndroidRuntime(1169): Process: asm.offcampusresdemo, PID: 1169
04-10 20:54:03.481: E/AndroidRuntime(1169): java.lang.NullPointerException
04-10 20:54:03.481: E/AndroidRuntime(1169):     at asm.offcampusresdemo.DashboardAdapter.getView(DashboardGridActivity.java:118)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.widget.AbsListView.obtainView(AbsListView.java:2263)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.widget.GridView.onMeasure(GridView.java:1044)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.view.View.measure(View.java:16497)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:719)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:455)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.view.View.measure(View.java:16497)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.view.View.measure(View.java:16497)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:327)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.view.View.measure(View.java:16497)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2291)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.view.View.measure(View.java:16497)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1916)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1113)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1295)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1000)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5670)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.view.Choreographer.doCallbacks(Choreographer.java:574)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.view.Choreographer.doFrame(Choreographer.java:544)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.os.Handler.handleCallback(Handler.java:733)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.os.Handler.dispatchMessage(Handler.java:95)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.os.Looper.loop(Looper.java:136)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.app.ActivityThread.main(ActivityThread.java:5017)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at java.lang.reflect.Method.invokeNative(Native Method)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at java.lang.reflect.Method.invoke(Method.java:515)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at dalvik.system.NativeStart.main(Native Method)
04-10 20:54:06.321: I/Process(1169): Sending signal. PID: 1169 SIG: 9

请建议我如何解决这个问题。

Please suggest me how to resolve this problem

推荐答案

你的领域背景 DashboardAdapter

你应该确保你给它分配在构造函数,像这样的:

you should make sure you assign it in your constructor, like this:

Context mContext = null;

DashboardAdapter(Context context)
{
    mContext = context;
    dashboardImages = new ArrayList<DashboardItems>();
    Resources res = context.getResources();
    String[] tempDashItems = res.getStringArray(R.array.dashboard_names);
    int[] dashImages = {R.drawable.apartments, R.drawable.atms, R.drawable.banks, R.drawable.book_stores, R.drawable.car_rentals, R.drawable.furniture_shops, R.drawable.gas_stations, R.drawable.gyms, R.drawable.malls, R.drawable.mobile_shops, R.drawable.pharmacy, R.drawable.pizza_places, R.drawable.postal_services, R.drawable.restaurants, R.drawable.subs_burgers, R.drawable.supermarkets, R.drawable.theatres};
    for(int i=0;i<10;i++)
    {
        DashboardItems tempDash = new DashboardItems(dashImages[i],tempDashItems[i]);
        dashboardImages.add(tempDash);
    }
}

请注意:我已改名为字段背景 mContext 所以它是比较明显的,它是一个成员字段,因此它不会被通过方法参数隐

Note: I have renamed the field context to mContext so it is more obvious that it is a member field, and so it won't be hidden by the method argument

这篇关于跳过32帧!该应用程序可能会做太多的工作在其主线程,然后致命异常:主要的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆