我可以使用另一个线程在BroadcastReceiver.onReceive中执行长期操作吗?

问题描述 投票:1回答:3
关于BroadcastReceiver.onReceive,Android文档说:如果通过标签启动此BroadcastReceiver,则从该函数返回后,该对象不再活动。但是我的测试代码说了另外一回事。

@Override public void onReceive(Context context, Intent intent) { new Thread(new Runnable() { @Override public void run() { **System.out.println("thread in:" + System.currentTimeMillis());** try { Thread.sleep(10000); **System.out.println("thread finish:" + System.currentTimeMillis());** } catch (InterruptedException e) { e.printStackTrace(); } } }).start(); }

它将同时打印线程和线程完成,好像我可以在onReceive中使用另一个线程。

关于BroadcastReceiver.onReceive,Android文档说:如果此BroadcastReceiver是通过标签启动的,则从该函数返回后,该对象不再活动。但是...

android broadcastreceiver
3个回答
0
投票
确保您可以在广播接收器中使用另一个线程来运行。广播接收器的onRecieve()方法在UI主线程中运行。因此,onReceve不必花很多时间执行。通常,启动服务通常比启动线程更好。但是,您可能还有其他理由要在广播接收器中使用线程。因此完全可以使用。

0
投票
在您的示例代码中,使用新线程来创建以处理任务。完成OnReceive()后,线程将继续运行,但接收器将终止。

-2
投票
是。您可以在广播接收器的onReceive()方法中使用多个线程;
© www.soinside.com 2019 - 2024. All rights reserved.