BroadcastReceiver for BOOT_COMPLETED没有从sleep()返回

时间:2012-05-04 10:38:57

标签: android broadcastreceiver sleep delay bootcompleted

我有一个对BOOT_COMPLETED做出反应的BroadcastReceiver。反过来它应该发出一个意图,但这个意图应该延迟一段时间。出于某种原因,如果sleep()调用的参数大于约。 6000ms,睡眠永远不会返回(我从未在下面的代码中看到“完成睡眠!”消息)。也没有异常抛出。低于6000毫秒,一切正常!

任何想法如何解决这个问题都会很棒!

public class BootReceiver extends BroadcastReceiver
{   
    @Override
    public void onReceive( final Context context, final Intent intent)
    {                  
        Thread thr = new Thread ()
        {
            @Override
            public void run()
            {
                Log.e ( "Test", "Going to sleep!" );

                try {
                   sleep(8000);
                } catch (InterruptedException e) { e.printStackTrace(); }

                Log.e ("Test","Sleep done!");
            }
        };
        thr.start();
    }
}

1 个答案:

答案 0 :(得分:2)

  

我有一个对BOOT_COMPLETED做出反应的BroadcastReceiver。反过来它应该发出一个意图,但这个意图应该延迟一段时间。

然后,您应该在指定的延迟后使用AlarmManager set() PendingIntent BroadcastReceiver

  

由于某种原因,如果sleep()调用的参数大于约。 6000ms,睡眠永远不会返回(我从未在下面的代码中看到“完成睡眠!”消息)。

您有{{1}}等效的“应用程序无响应”(ANR)条件,因为您将主应用程序线程捆绑了太长时间。

  

也没有例外。

是的,但LogCat中有一个警告 - 至少过去曾经有过警告。