0

一旦调用了其内部 BroadcastReceiver onReceived ,继续当前 Activity 的最佳方式是什么。

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

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

谢谢

4

1 回答 1

0

请注意,活动不会在屏幕方向更改后继续存在——它会与视图层次结构一起重新创建。从 MVC 的角度来看,一个 Activity 就是一个控制器。必须经受住方向变化的数据必须进入模型。

如果你保留对由于方向改变而离开屏幕的Activity的引用,那就是资源泄漏,如果Activity接收到一些AsyncTask的结果,那也是对CPU时间和电池电量的浪费。

话虽如此,Activity 定义了runOnUiThread(可运行操作),这很可能不是您真正需要的,但它至少可以工作。

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

如果您问是否可以依赖 SomeActivity 的相同实例将在长时间操作完成时显示,答案是否定的。例如,用户开始长时间操作,然后更改屏幕方向。第一个 SomeActivity,即开始长操作的那个,不会在长操作完成时显示。

于 2013-11-11T08:24:43.800 回答