Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android AsyncTask在onPreExecute之后,在多次运行之后停止_Android_Multithreading_Asynchronous_Android Asynctask - Fatal编程技术网

Android AsyncTask在onPreExecute之后,在多次运行之后停止

Android AsyncTask在onPreExecute之后,在多次运行之后停止,android,multithreading,asynchronous,android-asynctask,Android,Multithreading,Asynchronous,Android Asynctask,我的程序中有一个AsyncTask,在应用程序运行几次后,它似乎在onPreExecute()之后停止。我的意思是,我可以使用这个应用程序,每样东西都可以运行10-20次,但之后它就停止了。下面是发生的事情: private class MyTask extends AsyncTask<String, Void, Data> { protected void onPreExecute() { // show loading dialog Lo

我的程序中有一个
AsyncTask
,在应用程序运行几次后,它似乎在
onPreExecute()
之后停止。我的意思是,我可以使用这个应用程序,每样东西都可以运行10-20次,但之后它就停止了。下面是发生的事情:

private class MyTask extends AsyncTask<String, Void, Data> {

    protected void onPreExecute() {
        // show loading dialog
        Log.d(TAG, "end onPreExecute");
    }

    protected Data doInBackground(String... params) {
        Log.d(TAG, "start doInBackground");
        // do stuff
    }

    protected void onPostExecute(Data myData) {
        // do stuff
    }

}
私有类MyTask扩展了AsyncTask{
受保护的void onPreExecute(){
//显示加载对话框
Log.d(标记“end onPreExecute”);
}
受保护数据doInBackground(字符串…参数){
Log.d(标签“start doInBackground”);
//做事
}
受保护的void onPostExecute(数据myData){
//做事
}
}
当它停止工作时,所发生的情况是加载对话框一直保持加载,并且
会打印“end on PreExecute”
,但
不会打印“start Doin Background”


为什么会这样?

很难说问题出在哪里。由于您的异步任务在最初几次似乎都能正常工作,因此可能是因为此API功能太过

您的问题的解决方案可以是,用不同的线程解决方案替换AsyncTask:

  • 是一个帖子,在这里这个问题由一个
  • 这是一篇展示如何使用密码的文章

希望有帮助

您是否在“onPostExecute”中关闭了您的对话框?LogCat上没有可以附加到您的问题的内容?也许这可能是内存不足的问题,因为您运行了很多次。。。没有更多的信息,就不可能帮助你。[]s NetoIs您在PreExecute中执行的其他操作是否会暂停?连接到服务或加载某些内容?@NetoMarin不,logcat只显示我在Log.d()中写的内容@Alexander.S不,加载对话框是我在OnPreExecute中唯一做的事情,这很有帮助,谢谢!我不知道AsyncTask不适合所有情况。我试着选择传统的线程;但是你知道我怎么还能用它做“预执行”和“后执行”吗?试着用回调。可以在UI线程上运行的方法的开头、中间和结尾处调用。因此,您的回调对象可以实现一个带有“preExecute”、“progressUpdate”和“postExecute”等方法的接口,在这些方法中,您可以传递一些参数并定义要在UIThread上执行的操作。。。