如何更新TextView从AsyncTask当我重新创建活动



我有myProgressTextView在MainActivity。在MainActivity内部,我使用asyncTask:MyTask.execute(getApplicationContext(),myProgressTextView)启动一个长进程使用publishProgressonPostExecute我能够更新myTextView和工作都像一个魅力。

我在其他活动之间导航和返回到MainActivity有问题。再次通过onCreate的MainActivity的myTextView引用被改变和我不再能够更新我的UI (myTextView)从我的任务,仍在运行。在这种情况下,正确的解决方案是什么?

在Android中,AsyncTask现在已被弃用。Google鼓励使用新的android架构组件。如果您希望在屏幕旋转中持久化来自任务的信息,您应该考虑使用ViewModel和Kotlin协程。关于ViewModel和Kotlin协程的更多信息。

你应该在活动离开屏幕时取消所有的任务,即onStop()。Async Task是不赞成的,你可以使用ViewModel和LiveData方法来处理这个场景,因为Live数据是生命周期感知的。

最新更新