网络丢失后Android暂停异步任务

标签 android android-asynctask

我正在使用 AsyncTask,我使用 HttpUrlConnection 下载图像。我正在使用 BroacastReciever 来监听连接变化。我想知道如何在网络丢失时暂停它并在重新连接后继续它。如果任何人都可以提供一些 fragment/代码,那将会很有帮助。

谢谢。

最佳答案

据我所知,AsyncTask无法暂停

documentation说它们只能运行一次。因此,如果您尝试暂停和恢复 AsyncTask,则会导致 IllegalStateException

您可以做什么:

在您的 doInBackground() 中,在特定时间间隔后继续检查网络连接。当网络不可用时,取消它并将数据保存在您的应用程序缓存中。启动计时器以在一定超时后继续检查网络。当网络再次恢复时,从您停止的地方开始一个新的 AsyncTask(取决于您在缓存中有什么)。最后一部分是我不确定的,因为您需要服务器标记您已经下载了多少以及还剩下多少。我认为并非所有服务器都提供此功能,这一点从一些下载可恢复而另一些则不可恢复这一事实中可以明显看出。

另一种非常肮脏的方法是在您失去网络连接时让您的后台线程休眠

类似的东西:

if(networkConnectivity == false)
do
{

   sleep(5000); // pauses the thread for 5 seconds

}while(networkConnectivity == false);

关于网络丢失后Android暂停异步任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18818566/

相关文章:

Android - clickableSpan 和 TextView 的问题

android - 等待 AsyncTask 获取数据并在那之后在 UI 线程中做一些事情

android - okhttp3 如何从异步 GET 调用返回值

android - 从 dialogfragment 发布新数据后更新 Listview

android - Twitter OAuth Rest Api 状态参数 '@' 符号

php - 按获取按钮后应用程序崩溃。 Android 的远程数据库

java - Android 多重通知和多重 Intent

java - 加载图像,因为它们是可见的 Android

android - 从 OnPostExecute(异步)更新 UI

android - 从 AsyncTask 更新通知栏导致通知栏崩溃