Che*_*eng 6 android android-loadermanager android-loader
目前,我有一个装载机
@Override
public Loader<List<HomeMenuRowInfo>> onCreateLoader(int arg0, Bundle bundle) {
return new HomeMenuRowInfosLoader(this.getSherlockActivity());
}
Run Code Online (Sandbox Code Playgroud)
有时,由于内容更改,我需要让加载程序重新加载.我会做的.
this.getLoaderManager().getLoader(0).onContentChanged();
Run Code Online (Sandbox Code Playgroud)
但是,我希望onCreateLoader在内容更改时将一些其他捆绑信息传递给回调.我意识到通过使用onContentChanged,没有办法这样做.
我能搞清楚的唯一方法是
this.getLoaderManager().restartLoader(0, bundle, this);
Run Code Online (Sandbox Code Playgroud)
我想知道,是否有任何重大分歧Loader的行为,使用的restartLoader不是onContentChanged,除了捆绑传递的能力吗?
我认为,主要区别在于,该restartLoader方法会销毁具有相同 ID 的旧加载程序并启动一个新加载程序,而该onContentChanged方法要么强制加载程序加载(forceLoad),要么只是设置一个标志,指示加载程序加载时内容已更改。停了下来。在第二种情况下,加载器的“所有者”在内容更改后仍然负责其(重新)加载。我认为这是由情况自动完成loaderManager的restartLoader。
如果您决定使用该restartLoader方法,您应该记住旧加载程序的破坏以及对您的应用程序可能产生的影响,例如缓慢的重新初始化等。
您可以查看方法文档以获取更多信息 -restartLoader并且onContentChanged
另请注意,当新加载程序完成工作时,旧加载程序将被销毁
| 归档时间: |
|
| 查看次数: |
2085 次 |
| 最近记录: |