gpt4 book ai didi

android - 互联网中断时停止/清除 IntentService 队列?

转载 作者:行者123 更新时间:2023-11-30 04:29:14 24 4
gpt4 key购买 nike

我正在加载一组要下载的文件,并为每个文件启动一个 IntentService。问题是在 Internet 连接问题的情况下,例如如果设备断开连接,我将不得不以某种方式清除或停止 IntentService 的队列处理。

在我的代码中,我有一个 while 循环,其中正在下载文件。此循环运行的条件之一是:检查我使用以下代码完成的 Internet 连接:

public boolean isOnline() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
if(cm != null){
return cm.getActiveNetworkInfo().isConnectedOrConnecting();
}
return false;


}

我的循环类似于以下内容:

while(.. , isOnline()){
/// Download file
}

如果我现在正在下载队列中的文件,如果 Internet 出现故障,循环将不再运行并且该文件的 IntentService 将停止,但现在如果 Internet 恢复,下载将从中的下一个文件开始队列忽略了我们无法下载的最后一个文件。如何清除 IntentService 队列或使 IntentService 队列从它离开的地方恢复下载。

最佳答案

How can I clear the IntentService queue or make the IntentService queue resume the download from where it left.

AFAIK,你真的做不到。 IntentService 使用的队列不会暴露给开发人员。

在这种情况下,您可能会更好地创建自己的队列(例如,LinkedBlockingQueue),您自己的线程监控该队列,以及您自己的服务包装所有其中(并处理队列清空后调用 stopSelf() 并退出后台线程的情况)。

或者,让 IntentService 通知一些东西(例如,通过 Messenger)有关下载失败的信息,这样您就可以稍后在 Internet 访问恢复时将该文件加入队列。

关于android - 互联网中断时停止/清除 IntentService 队列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8000137/

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