一旦调用了其内部 BroadcastReceiver onReceived ,继续当前 Activity 的最佳方式是什么。
是否可以从 onReceived() 方法中启动另一个线程,也可以在 onReceived() 中启动 AsyncTask 吗?
是否可以从 onReceived 方法中再次启动相同的活动?
谢谢
一旦调用了其内部 BroadcastReceiver onReceived ,继续当前 Activity 的最佳方式是什么。
是否可以从 onReceived() 方法中启动另一个线程,也可以在 onReceived() 中启动 AsyncTask 吗?
是否可以从 onReceived 方法中再次启动相同的活动?
谢谢
请注意,活动不会在屏幕方向更改后继续存在——它会与视图层次结构一起重新创建。从 MVC 的角度来看,一个 Activity 就是一个控制器。必须经受住方向变化的数据必须进入模型。
如果你保留对由于方向改变而离开屏幕的Activity的引用,那就是资源泄漏,如果Activity接收到一些AsyncTask的结果,那也是对CPU时间和电池电量的浪费。
话虽如此,Activity 定义了runOnUiThread(可运行操作),这很可能不是您真正需要的,但它至少可以工作。
我的意思是,在调用接收器的方法之后,正常循环继续(对事件的反应等),因此您只需对报告给 BroadcastReceiver 的事件做出反应并到达函数的右括号。
如果您问是否可以依赖 SomeActivity 的相同实例将在长时间操作完成时显示,答案是否定的。例如,用户开始长时间操作,然后更改屏幕方向。第一个 SomeActivity,即开始长操作的那个,不会在长操作完成时显示。