视图什么时候被“杀死”并且在 Android 中不再存在?
例如,假设我有一个 asynctask,并且我在该doInBackground()
方法中运行了一些与网络相关的东西。然后,我需要在onPostExecute()
方法中更新我的 UI 视图。假设我doInBackground()
花了一段时间,在处理它时,用户向后移动甚至按下了主页按钮。该任务将继续,因为 doInBackground 在单独的线程上运行,但是,一旦完成并调用 onPostExecute 来更新视图,视图可能不存在。
- 即使活动不可见(进入主屏幕或其他活动),当视图试图被访问和修改时会发生什么?他们在“堆/内存/任何东西”中停留了多长时间,在 onDestroy 之后他们会被垃圾收集吗?或者他们在那之后留下来?
我知道避免这种麻烦的一种方法是使用在 onResume 和 onStop 内部打开和关闭的开关,并在更新 onPostExecute 中的视图之前检查它,但我不确定这是否是在 android 应用程序中应用的可靠方法?如果没有,建议的方法是什么?