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上执行的操作。。。