我正在使用 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/