我有一個加載程序。我希望它只能在底層數據模型更改時啓動。我認爲這是裝載機的要點。從Android文檔:加載程序重新啓動活動啓動混亂
裝載程序,特別是CursorLoader,預計在停止後保留其數據 。這允許應用程序跨活動或片段的onStop()和onStart()方法保留其數據 ,因此 當用戶返回到應用程序時,他們不必等待 數據重新加載。
太好了。但是,每當我的活動恢復時,我的加載器onStartLoading()都會被調用。調試到平臺代碼中,Activity.onStart()的實現最終將重新啓動所有加載器。具體的調用堆棧,
Activity.onStart() -->
FragmentController..doLoaderStart() -->
FragmentHostCallback.doLoaderStart() -->
LoaderManagerImpl.doStart() -->
LoadermanagerImpl.LoaderInfo.start() -->
Loader.startLoader() -->
<my loader>.onStartLoading()
我的裝載機是昂貴的,所以我不希望它重新加載時,我的活動重新啓動,這似乎違背上述其中特別指出裝載機都應該保留的報價他們的數據跨越停止/啓動週期。
這是否有意義?
只是一個提示。您應該真正考慮使用生命週期組件而不是加載器。這裏有一篇很好的文章解釋了Loaders,生命週期和狀態的更多信息:https:// medium。com/google-developers/viewmodels-persistence-onsaveinstancestate-restoring-ui-state-and-loaders -fc7cc4a6c090 – Peter
你可以分享你調用'getLoaderManager.initLoader()'的地方嗎? – chessdork
甚至有[關於從加載程序轉換爲體系結構組件的博客文章](https://medium.com/google-developers/lifecycle-aware-data-loading-with-android-architecture-components-f95484159de4) – ianhanniballake