onReceived,如何在同一个Activity中继续?

时间:2013-11-11 07:47:29

标签: android multithreading android-asynctask broadcastreceiver

在调用其内部BroadcastReceiver onReceived后,继续当前Activity的最佳方法是什么。

是否可以从onReceived()方法中启动另一个线程,还可以在onReceived()中启动AsyncTask吗?

是否可以从onReceived方法中再次启动相同的活动?

感谢名单

1 个答案:

答案 0 :(得分:0)

请注意,“活动”无法在屏幕方向更改后继续存在 - 它会随“视图”层次结构一起重新创建。从MVC的角度来看,Activity是一个Controller。必须经过方向更改的数据必须转到模型。

如果您保留对由于方向更改而从屏幕移出的活动的引用,这是资源泄漏,并且如果活动收到某些AsyncTask的结果,那么这也浪费了CPU时间和电池电量。 / p>

话虽如此,Activity定义了 runOnUiThread(Runnable action),这很可能不是你真正需要的,但它至少会起作用。

我的意思是,在调用接收者的方法之后,正常循环继续(对事件等的反应),所以你只需要对报告给你的BroadcastReceiver的事件作出反应并到达函数的右括号。

如果您询问是否可以依赖于在长操作完成时显示相同的SomeActivity实例,则答案为否。例如,用户启动长操作,然后更改屏幕方向。当长操作完成时,第一个SomeActivity(启动长操作的那个)将不会显示。