在IT技术中,我们经常需要启动一个耗时的计算线程,并且需要在稍后更新Activity
或Fragment
以显示计算结果。
我一直遵循以下指南,这对我来说一直很有效:
AsyncTask需要在UI Fragment中执行onPostExecute
- 使用无UI的片段并使用
setRetainInstance(true)
。 - 使用
setTargetFragment
和getTargetFragment
技术。 - 请参考https://dev59.com/92oy5IYBdhLWcg3wo_gn#12303649。
AsyncTask需要在UI Activity中执行onPostExecute
- 使用无UI的片段并使用
setRetainInstance(true)
。 - 使用
onAttach
和onDetach
来存储对Activity
的引用。Google似乎不鼓励使用getActivity
。http://developer.android.com/guide/components/fragments.html - 请参考https://dev59.com/92oy5IYBdhLWcg3wo_gn#16305029。
然而,如果是从View
派生的类呢?我计划从自定义View
中启动AsyncTask
。但是,我如何将onPostExecute
返回到View
中呢?
我问这个问题的原因是,在我的自定义视图中,某些触摸事件会触发它使用新的位图重新绘制自己。生成新位图需要耗费时间。因此,我计划启动一个AsyncTask
来生成这样的位图,并将其传回自定义视图。但是,配置更改可能会导致自定义视图被重新创建。因此,在onPostExecute
期间,我需要确保我的AsyncTask
可以正确地引用视图。
View
内部的AsyncTask
吗? - Alex Lockwood