我完全不明白initLoader
而restartLoader
的职能LoaderManager
:
restartLoader
如果加载程序不存在,也会创建一个加载程序(“在此管理器中启动一个新的或重新启动一个现有的Loader”)。这两种方法之间有什么关系吗?打电话restartLoader
总是打电话initLoader
是吗?我能打电话吗restartLoader
不用打电话initLoader
是吗?打电话省省吗?initLoader
两次刷新数据?我什么时候应该使用其中之一和(重要!)为什么?
发布于 2018-03-26 11:55:30
呼叫initLoader
当Loader已经创建(例如,在配置更改之后)告诉LoaderManager将Loader的最新数据交付给onLoadFinished
马上。如果尚未创建加载程序(例如,当活动/片段第一次启动时),则调用initLoader
告诉LoaderManager调用onCreateLoader
创建新的装载机。
呼叫restartLoader
销毁已存在的Loader(以及与其相关的任何现有数据),并通知LoaderManager调用onCreateLoader
来创建新的装载机并启动一个新的负载。
文档也非常清楚地说明了这一点:
initLoader
确保装载机已初始化并处于活动状态。如果加载程序不存在,则创建一个加载程序,并启动加载程序(如果活动/片段当前已启动)。否则,最后创建的加载程序将被重用。restartLoader
在这个管理器中启动一个新的或重新启动一个现有的Loader,注册对它的回调,并且(如果活动/片段当前已经启动)开始加载它。如果先前启动了具有相同id的加载程序,则在新加载程序完成其工作时将自动销毁该加载程序。回调将在旧加载程序销毁之前交付。https://stackoverflow.com/questions/-100003218
复制相似问题