如果连接或设备速度较慢,则Android异步任务在完成之前终止
我有一个如果连接或设备速度较慢,则Android异步任务在完成之前终止,android,android-asynctask,Android,Android Asynctask,我有一个AsyncTask,在这里我调用一个方法,从internet下载一些数据并执行某些操作 在emulator中,无论连接速度如何,此任务始终有效,但在实际设备上,如果连接或设备速度不快,此任务将自动终止。我不知道为什么,但在Android默认任务管理中可能存在某种默认超时 如何解决此问题? 如何始终强制完成任务? 这是我的密码 myTask = new AsyncTask<Void, Void, Void>() { ProgressDialog pd;
AsyncTask
,在这里我调用一个方法,从internet下载一些数据并执行某些操作
在emulator中,无论连接速度如何,此任务始终有效,但在实际设备上,如果连接或设备速度不快,此任务将自动终止。我不知道为什么,但在Android默认任务管理中可能存在某种默认超时
如何解决此问题?
如何始终强制完成任务?
这是我的密码
myTask = new AsyncTask<Void, Void, Void>() {
ProgressDialog pd;
boolean correctlyInitialized = true;
@Override
protected void onPreExecute() {
pd= new ProgressDialog(CatcherTree.this);
pd.setCancelable(false);
try {
pd.show();
} catch (Error e) {
e.printStackTrace();
}
}
@Override
protected Void doInBackground(Void... params) {
long t = System.currentTimeMillis();
//this method requires time to complete
updateAllDataSet(CatcherTree.this);
return null;
}
@Override
protected void onPostExecute(Void rate) {
pd.dismiss();
}
}.execute();
myTask=newasynctask(){
进展性帕金森病;
布尔值correctlyInitialized=true;
@凌驾
受保护的void onPreExecute(){
pd=新建进度对话框(CatcherTree.this);
pd.可设置可取消(假);
试一试{
pd.show();
}捕获(错误e){
e、 printStackTrace();
}
}
@凌驾
受保护的Void doInBackground(Void…参数){
long t=System.currentTimeMillis();
//此方法需要时间才能完成
updateAllDataSet(CatcherTree.this);
返回null;
}
@凌驾
执行后受保护的作废(作废率){
pd.解散();
}
}.execute();
异步任务依赖于工作线程来完成后台工作,线程不会消失。因此,我猜测工作线程正在抛出异常并终止
查看日志以查找异常,或者更好的方法-在
updateAllDataSet()
中正确处理异常此任务将自动终止
-您是如何知道的?如果连接速度快,没有问题,如果速度慢,等待对话框将被取消,不会出现任何崩溃或错误,但操作将暂停。如果我尝试在AsyncTask之外调用该方法,则尽管速度很慢,但该过程本身不会崩溃,但是,如果连接或设备运行缓慢,则由于完成时间过长而中断。您是如何得出这一结论的?我已经调试了应用程序,没有发生连接中断或其他类型的异常。如果连接速度快,没有问题,如果速度慢,等待对话框将被取消,不会出现任何崩溃或错误,但操作将暂停。如果我尝试在AsyncTask之外调用该方法,那么不管调用的速度有多慢onPostExecute是否正确完成了任务?如果没有-那么PD是如何解散的?如果是,则表示任务已完成。如果doInbackground()中的任务在缓慢情况下未完成,则该对话框也将被取消。。。这是我的问题