gpt4 book ai didi

android - Loader 和 LoaderManager - 如何确定当前 Loader 是否处于 Activity 状态并正在运行?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:13:35 24 4
gpt4 key购买 nike

如何查询 LoaderManager 以查看 Loader 当前是否正在运行?

最佳答案

有两种可能的情况:

第一种情况

如果您使用唯一的加载器,或者您有多个加载器但您不关心其中一个正在运行:

getSupportLoaderManager().hasRunningLoaders()

第二种情况

您想知道某个特定的 Loader 是否正在运行。 SDK好像不支持,不过你可以自己轻松实现。

a) 只需添加标志

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;
}
//...
}

b) 并使用它(有点棘手):-)

SomeLoader loader = (SomeLoader) manager.<String[]>getLoader(ID);
Log.d(TAG, "isRunning: " + loader.isRunning);

我将它发布在这里的关键原因 - 在将 Loader 转换为您的 SomeLoader 之前调用泛型方法非常棘手。

提醒

无论您调用 getSupportLoaderManager.restartLoader 做什么,您当前的任务(如果它正在运行)都不会被终止。因此下一步将调用 onCreateLoader,这将创建一个新的 Loader。因此,这意味着您可以同时执行 2、3、4、5 和更多相同任务的并行任务(如果您不以某种方式阻止它),这可能会导调用池耗尽并超出 CPU/网络负载。

关于android - Loader 和 LoaderManager - 如何确定当前 Loader 是否处于 Activity 状态并正在运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9525874/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com