线程被Android系统

时间:2016-03-15 02:53:39

标签: android multithreading

在我的Android应用程序中,我正在接收器中执行侦听BOOT_UP_Completed广播的任务。因为任务持续时间是不确定的并且取决于当前系统时间,所以我在不同的线程中执行了该任务。该线程在BOOT_COMPLETED intent的onReceive()方法中启动。在线程任务中,如果检查无法避免CPU周期的过度使用,我会将线程休眠1秒钟。 run方法如下所示:

while (true) {

        if (condition == true) {
            //doSomething
            break;
        }

        Thread.sleep(sleep_duration);   // 1 second
    }

当我启动设备时,线程会运行一段时间,然后我会收到如下消息:

I/ActivityManager( 3166): Killing 6916:process/1101 (adj 15): bgCount ##41

我不确定为什么系统会杀死该线程。或者为什么线程停止执行。任何线索都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

您不能拥有BroadcastReceiver中的长期线程(超过几秒钟)。一旦BroadcastReceiver结束,Android可能会杀死该应用。要解决此问题,请从BroadcastReceiver启动服务并让服务拥有线程。服务可以持续所需的时间。