1

我正在使用我使用.ImAsyncTask下载图像的地方来收听连接更改。我想知道如何在网络丢失时暂停它并在重新连接后继续它。如果有人可以提供一些片段/代码,那将会很有帮助。HttpUrlConnectionBroacastReciever

谢谢你。

4

1 回答 1

3

据我所知,AsyncTask 不能暂停

文档说它们只能运行一次。因此,如果您尝试暂停和恢复 AsyncTask,它将导致IllegalStateException.

你可以做什么 :

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

当您失去网络连接时,另一种非常肮脏的方法是让您的后台线程进入睡眠状态。

就像是 :

if(networkConnectivity == false)
do
{

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

}while(networkConnectivity == false);
于 2013-09-15T23:48:31.120 回答