android - Activity的后台线程和配置更改

标签 android multithreading configuration android-activity orientation

我在 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/

相关文章:

c++ - 如何在这个小的多线程程序中调试死锁

configuration - 如何在 Varnish 配置中注入(inject)环境变量

java - 将多个 TextView 保存为高分辨率图像

Android 定义可在自定义启动器中使用的快捷方式

java - 有没有比 jdb 更好的 Java CLI 调试器工具?

android - Instant App,实际的最小 sdk 是多少

database - QSqlDatabase在不同线程中的并发查询

java - java中如何给不同的线程分配不同的方法

file-io - 打开文件时在 Komodo Edit 中自动切换自动换行

java - log4j配置文件错误检测