OnLoadFinished()调用两次

Mat*_*ler 20 android loader android-fragments android-loadermanager android-fragmentactivity

我想弄清楚我是否在装载机方面做错了.我正在使用支持库,我有一个片段,在onCreate()中调用initLoader()将其自身设置为LoaderCallbacks,但是在旋转时它会在onLoadFinished()中接收两次结果,一次调用init (并且它已经拥有数据),并且一旦FragmentActivity循环遍历onStart()中的所有Loaders并提供结果,因为它已经拥有数据.

如果我只调用init一次(在首次启动Fragment时),它不会将自己设置为Loader的回调,因此它根本不会接收对onLoadFinished的调用.好像onLoadFinished应该只被调用一次,因为onLoadFinished()可以完成一些昂贵的事情(例如清除列表适配器等),所以我只想弄清楚这是一个bug还是我是只是在错误的时间或其他地方调用init.

任何人都对此问题有任何见解?

Gor*_*man 2

我自己也遇到同样的问题,没有好的解决方案。这似乎是 Android 框架中的错误,这里有一个类似的线程,其中建议的解决方案是将 initLoader() 放在 onResume() 中 - 我已经尝试过了,它有效,onLoadFinished() 仅被调用一次: Android: LoaderCallbacks.OnLoadFinished 被调用两次