重新创建 activity 时如何从 AsyncTask 更新 TextView
How to update TextView from AsyncTask when I recreate the activity
我在 MainActivity 中有 myProgressTextView。
在 MainActivity 中,我使用 asyncTask 启动了一个长进程:MyTask.execute(getApplicationContext(),myProgressTextView)
使用 publishProgress 和 onPostExecute 我能够更新 myTextView 并且工作起来就像一个魅力。
我在其他活动之间导航以及 return 返回 MainActivity 时遇到问题。
再次通过 MainActivity 的 onCreate myTextView 引用被更改并且
我无法再从仍然是 运行 的 MyTask 更新我的 UI ( myTextView )。
在这种情况下,正确的解决方案是什么?
在 Android 中,AsyncTask 现已弃用。 Google 鼓励使用新的 android 架构组件。如果您想在屏幕旋转时保留来自任务的信息,您应该考虑使用 ViewModel 和 Kotlin 协程。有关 ViewModel and Kotlin coroutines.
的更多信息
您应该在 activity 离开屏幕时取消所有任务,即 onStop()。
异步任务已弃用,您可以使用 ViewModel 和 LiveData 方法来处理这种情况,因为实时数据是生命周期感知的。
我在 MainActivity 中有 myProgressTextView。
在 MainActivity 中,我使用 asyncTask 启动了一个长进程:MyTask.execute(getApplicationContext(),myProgressTextView)
使用 publishProgress 和 onPostExecute 我能够更新 myTextView 并且工作起来就像一个魅力。
我在其他活动之间导航以及 return 返回 MainActivity 时遇到问题。 再次通过 MainActivity 的 onCreate myTextView 引用被更改并且 我无法再从仍然是 运行 的 MyTask 更新我的 UI ( myTextView )。 在这种情况下,正确的解决方案是什么?
在 Android 中,AsyncTask 现已弃用。 Google 鼓励使用新的 android 架构组件。如果您想在屏幕旋转时保留来自任务的信息,您应该考虑使用 ViewModel 和 Kotlin 协程。有关 ViewModel and Kotlin coroutines.
的更多信息您应该在 activity 离开屏幕时取消所有任务,即 onStop()。 异步任务已弃用,您可以使用 ViewModel 和 LiveData 方法来处理这种情况,因为实时数据是生命周期感知的。