如果连接或设备很慢,Android AsyncTask会在完成之前终止

时间:2015-04-25 14:42:16

标签: android android-asynctask

我有AsyncTask我在其中调用从互联网下载一些数据并执行某些操作的方法。

在仿真器中,尽管连接速度很快,但在实际设备上如果连接或设备不快,此任务会自动终止。我不知道为什么,但可能在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();

1 个答案:

答案 0 :(得分:0)

AsyncTasks依赖工作线程来执行后台作业,而线程不只是消失。所以我的猜测是工作线程抛出异常并终止。

在logcat中查找异常,或者更好的是 - 在updateAllDataSet()中正确处理异常。