我有一个对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();
}
}
答案 0 :(得分:2)
我有一个对BOOT_COMPLETED做出反应的BroadcastReceiver。反过来它应该发出一个意图,但这个意图应该延迟一段时间。
然后,您应该在指定的延迟后使用AlarmManager
set()
PendingIntent
BroadcastReceiver
。
由于某种原因,如果sleep()调用的参数大于约。 6000ms,睡眠永远不会返回(我从未在下面的代码中看到“完成睡眠!”消息)。
您有{{1}}等效的“应用程序无响应”(ANR)条件,因为您将主应用程序线程捆绑了太长时间。
也没有例外。
是的,但LogCat中有一个警告 - 至少过去曾经有过警告。