在按钮的单击处理程序中,我从内容提供者(使用getContentResolver().query(...)
)加载一些数据,然后在网络请求中发送该数据。由于使用这种方法在主线程上进行查询,因此我想将其移出主 UI 线程。
onLoadFinished()
我想我可以使用 LoaderManager,并onLoadFinished()
在例如屏幕方向。
那么,如何将 LoaderManager 用于我只想发生一次的查询?
在按钮的单击处理程序中,我从内容提供者(使用getContentResolver().query(...)
)加载一些数据,然后在网络请求中发送该数据。由于使用这种方法在主线程上进行查询,因此我想将其移出主 UI 线程。
onLoadFinished()
我想我可以使用 LoaderManager,并onLoadFinished()
在例如屏幕方向。
那么,如何将 LoaderManager 用于我只想发生一次的查询?
在你的onLoadFinished()
,你可以打电话getLoaderManager().destroyLoader(loaderId)
(或getSupportLoaderManager()
如适用)。这将阻止加载程序自动重新加载。您可能还需要确保您调用initLoader
的位置不会再次执行(onSaveInstanceState
例如通过保存布尔变量)。
调用LoaderManager#initLoader()
您的Activity#onCreate()
方法将创建一个新的Loader
并强制执行新的加载,或者重用现有的Loader
并提供最近查询的数据(如果存在)。因此,只要您LoaderManager
正确使用(即开发人员网站在文档中推荐的方式),您应该不会有任何问题。