重新创建 activity 时如何从 AsyncTask 更新 TextView

How to update TextView from AsyncTask when I recreate the activity

我在 MainActivity 中有 myProgressTextView。 在 MainActivity 中,我使用 asyncTask 启动了一个长进程:MyTask.execute(getApplicationContext(),myProgressTextView) 使用 publishProgressonPostExecute 我能够更新 myTextView 并且工作起来就像一个魅力。

我在其他活动之间导航以及 return 返回 MainActivity 时遇到问题。 再次通过 MainActivity 的 onCreate myTextView 引用被更改并且 我无法再从仍然是 运行 的 MyTask 更新我的 UI ( myTextView )。 在这种情况下,正确的解决方案是什么?

在 Android 中,AsyncTask 现已弃用。 Google 鼓励使用新的 android 架构组件。如果您想在屏幕旋转时保留来自任务的信息,您应该考虑使用 ViewModel 和 Kotlin 协程。有关 ViewModel and Kotlin coroutines.

的更多信息

您应该在 activity 离开屏幕时取消所有任务,即 onStop()。 异步任务已弃用,您可以使用 ViewModel 和 LiveData 方法来处理这种情况,因为实时数据是生命周期感知的。