【发布时间】:2015-04-08 00:05:17
【问题描述】:
我有一个 AsyncTaskLoader 在非常特殊的情况下被重置,希望有人能告诉我原因。
- 在我的活动中,我在
onCreate()方法中调用getSupportLoaderManager().initLoader(0, null, this)。一切都按预期运行:
D/Activity﹕ calling initLoader()
D/Activity﹕ onCreateLoader()
D/Loader﹕ onStartLoading()
D/Loader﹕ onStartLoading(): no data, forcing load
D/Loader﹕ loadInBackground()
D/Activity﹕ onLoadFinished()
- 但是,如果我将应用程序置于后台(点击主页),旋转设备,然后将其返回到前台,我会看到加载器已重置:
D/Activity﹕ onLoaderReset()
D/Activity﹕ calling initLoader()
D/Activity﹕ onCreateLoader()
D/Loader﹕ onStartLoading()
D/Loader﹕ onStartLoading(): no data, forcing load
D/Loader﹕ loadInBackground()
D/Activity﹕ onLoadFinished()
当应用程序被发送到后台并恢复(以相同的方向)时,加载程序不会重置,并且当应用程序在前台时旋转设备时,加载程序不会重置。因此,我不希望它在 #2 中描述的情况下被重置。
谁能提供任何见解?我试图阻止应用程序在有人将应用程序设置为背景、旋转设备然后恢复应用程序的关闭更改中进行不必要的调用。谢谢
【问题讨论】:
-
发生这种情况时是否还会调用 OnCreate()?
-
是的,正在调用 onCreate()
-
好吧,由于某种原因,您的活动正在重新创建。您应该在代码中考虑这种情况。我会发布答案
-
活动在旋转时被销毁并重新创建。这是正常的,也是意料之中的。问题是当应用程序不可见时,加载程序会被重置。