我在 Stack Overflow 上看到了一些与使用 Activity.onRetainNonConfigurationInstance() 相关的讨论,该讨论涉及使用 Activity.onRetainNonConfigurationInstance() 来维护由 Activity 的一个实例启动的后台线程,并将其传递给该 Activity 的下一个实例,例如,当手机方向从纵向变为横向。
讨论并没有具体说明包装在 onRetainNonConfigurationInstance() 返回的对象中的线程可以做什么。
例如: 1. 有没有办法使用这种技术来真正保持后台线程运行? 2. 当前一个 Activity 实例消失时,您是否需要以某种方式暂停线程,然后在新实例中重新启动它?
谁能提供一个简短的例子吗?
如有任何详细信息,我们将不胜感激。
最佳答案
您可以将任何您想要的内容返回到 onRetainNonConfigurationInstance()
。如果您希望将一个线程从 Activity 的一个实例传递到另一个实例,则可以直接返回它,或者将其放入从 onRetainNonConfigurationInstance()
返回的另一个对象中。您不需要暂停线程或以任何方式与其交互。它只是继续运行,就好像什么也没发生一样。
您唯一需要关心的是线程如何与 Activity 交互(如果有的话)。如果线程将回调 Activity(以指示进度或类似的内容),那么您需要以某种方式为线程提供对新 Activity 的引用,因为旧 Activity 将死亡。
你想在后台线程中做什么?
编辑(添加有关线程/Activity 的更多详细信息):
线程有自己的生命周期,与 Activity 完全无关。如果您在 Activity 中创建一个线程并启动它,那么无论您的 Activity 做什么,它都会运行到完成。唯一会显式停止线程的是 Android 决定终止您的进程(如果您的进程不包含 Activity Activity ,它可能会执行此操作)。
关于android - Activity的后台线程和配置更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10853049/