ERROR / ActivityManager(60)有没有人在Android模拟器上遇到过这种情况?

时间:2010-10-11 05:39:51

标签: android

每当我启动应用程序时,它都会强制关闭,引用下面的日志。这是CPU过载问题还是内存管理问题?我真的不明白怎么解决这个问题? 非常感谢任何帮助。

我正在运行Eclipse v 3.5.2和Android SDK 0.98以及AVD是Froyo(2.2)

DDMS日志

10-10 23:53:53.379:ERROR / ActivityManager(60):ANR in Test.Tooyoou 10-10 23:53:53.379:ERROR / ActivityManager(60):原因:执行服务Test.Tooyoou / .TooyoouWidget $ UpdateService 10-10 23:53:53.379:ERROR / ActivityManager(60):载荷:1.17 / 0.68 / 0.26 10-10 23:53:53.379:ERROR / ActivityManager(60):CPU使用率从20436ms到33ms前: 10-10 23:53:53.379:ERROR / ActivityManager(60):adbd:3%= 0%user + 3%kernel / faults:10 minor 10-10 23:53:53.379:ERROR / ActivityManager(60):Test.Tooyoou:2%= 2%用户+ 0%内核/故障:197次小型4大 10-10 23:53:53.379:ERROR / ActivityManager(60):system_server:2%= 1%user + 0%kernel / faults:134 minor 2 major 10-10 23:53:53.379:ERROR / ActivityManager(60):ndroid.settings:1%= 1%user + 0%kernel / faults:3016 minor 12 major 10-10 23:53:53.379:ERROR / ActivityManager(60):ndroid.launcher:0%= 0%user + 0%kernel / faults:32 minor 10-10 23:53:53.379:ERROR / ActivityManager(60):m.android.phone:0%= 0%user + 0%kernel / faults:174 minor 10-10 23:53:53.379:ERROR / ActivityManager(60):ronsoft.openwnn:0%= 0%user + 0%kernel / faults:99 minor 10-10 23:53:53.379:ERROR / ActivityManager(60):d.process.media:0%= 0%user + 0%kernel / faults:22 minor 10-10 23:53:53.379:ERROR / ActivityManager(60):netd:0%= 0%user + 0%kernel / faults:64 minor 1 major 10-10 23:53:53.379:ERROR / ActivityManager(60):com.svox.pico:0%= 0%user + 0%kernel / faults:26 minor 10-10 23:53:53.379:ERROR / ActivityManager(60):+ sh:0%= 0%user + 0%kernel 10-10 23:53:53.379:ERROR / ActivityManager(60):+ logcat:0%= 0%user + 0%kernel 10-10 23:53:53.379:ERROR / ActivityManager(60):TOTAL:11%= 5%用户+ 4%内核+ 0%irq + 0%softirq

1 个答案:

答案 0 :(得分:1)

好的伙计我认为我解决了这个非常丑陋的错误背后的问题。 BroadcastReceiver TimeOut存在一些问题,并且窗口小部件的更新服务耗时太长。我在这里如何解决它。

我没有使用AppWidget的服务做任何事情,而是产生了一个线程来完成所有关键的更新工作。

public static class UpdateService extends Service {
        Thread widgetUpdateThread;
        @Override
        public void onStart(Intent intent, int startId) {

        widgetUpdateThread = new Thread(){
            public void run(){
                RemoteViews updateViews =   
                                       buildUpdate(getApplicationContext());
                            ComponentName thisWidget = new 
                              ComponentName(getApplicationContext(), 
                                                       TooyoouWidget.class);
                AppWidgetManager manager =  
                      AppWidgetManager.getInstance(getApplicationContext());
                      manager.updateAppWidget(thisWidget, updateViews);

            }
        };
        widgetUpdateThread.start();
    }

    @Override
    public void onDestroy(){
        widgetUpdateThread.interrupt();
        super.onDestroy();
    }

     public RemoteViews buildUpdate(Context context) {
     //your code to create the Remoteviews update

}

}

一旦我使用了线程,一切都像魅力一样,丑陋的错误消失了。可能这对你们中的一些人有帮助。