我有一个AsyncTask我执行的类,它从网站下载大量数据.
如果最终用户在使用时数据连接速度非常慢或不稳定,我想AsyncTask在一段时间后进行超时.我的第一个方法是这样的:
MyDownloader downloader = new MyDownloader();
downloader.execute();
Handler handler = new Handler();
handler.postDelayed(new Runnable()
{
@Override
public void run() {
if ( downloader.getStatus() == AsyncTask.Status.RUNNING )
downloader.cancel(true);
}
}, 30000 );
Run Code Online (Sandbox Code Playgroud)
启动后AsyncTask,一个新的处理程序被启动,将取消AsyncTask30秒后,如果它仍在运行.
这是一个好方法吗?或者内置的AsyncTask内容是否更适合此目的?