syn*_*nic 10 android android-loadermanager
如何查询LoaderManager以查看Loader当前是否正在运行?
执行此操作有两种可能的情况:
如果您使用唯一的 Loader或者您有多个 Loader 但您不关心其中哪一个正在运行:
getSupportLoaderManager().hasRunningLoaders()
Run Code Online (Sandbox Code Playgroud)
您想知道某些特定功能是否Loader正在运行。SDK好像不支持,不过你自己也可以轻松实现。
public class SomeLoader extends AsyncTaskLoader<String[]> {
public boolean isRunning;
@Override
protected void onStartLoading() {
isRunning = true;
super.onStartLoading();
//...
forceLoad();
}
@Override
public void deliverResult(String[] data) {
super.deliverResult(data);
isRunning = false;
}
//...
}
Run Code Online (Sandbox Code Playgroud)
SomeLoader loader = (SomeLoader) manager.<String[]>getLoader(ID);
Log.d(TAG, "isRunning: " + loader.isRunning);
Run Code Online (Sandbox Code Playgroud)
我将其发布在这里的关键原因 - 在将 a 转换Loader为您的SomeLoader.
无论您调用getSupportLoaderManager.restartLoader当前任务(如果正在运行),您所做的任何事情都不会被终止。因此下一步将是调用onCreateLoader它将创建一个新的Loader. 因此,这意味着您可以将 2、3、4、5 甚至更多相同的任务并行在一起(如果您不以某种方式阻止它),这可能会导致电池耗尽并超出 CPU/网络负载。