2013-06-22 91 views
3

doInBackground完成后,onPostExecute未被调用。如果我尝试发布进度,onProgressUpdate也不会被调用。Android,AsyncTask,onProgressUpdate和onPostExecute未被调用

我重新创建了一个asyncTask,它在后台不做任何事情,但记录一个文本,但两个方法都不会被调用。

这里是我的代码

public class MyAsyncTask extends AsyncTask<Object, Integer, Void> { 

@Override 
protected Void doInBackground(Object... params) { 
    Log.d("MyAsyncTask","doInBackground"); 
    publishProgress(1); 
    return null; 
} 

@Override 
protected void onPostExecute(Void result) { 
    Log.d("MyAsyncTask","onPostExecute"); 
    super.onPostExecute(result); 
} 

@Override 
protected void onProgressUpdate(Integer... values) { 
    Log.d("MyAsyncTask","onProgressUpdate"); 
    super.onProgressUpdate(values); 
}} 

,这里是我如何把它

new MyAsyncTask().execute(); 
+0

也许发布你的'AsyncTask'和你怎么称呼它,否则不能回答这个“问题” – codeMagic

+0

你的代码在哪里? – SimonSays

+0

您是否依靠日志来知道这些方法没有被调用,或者您是否尝试过设置断点? – codeMagic

回答

1

我是用一连串的jar项目,并通过删除它,它重新添加到项目中,每一件事工作得很好...我不知道为什么但这就是为我解决的。

1

在主/ UI线程执行的任务:

new MyAsyncTask().execute("Test"); 

的AsyncTask:

public class MyAsyncTask extends AsyncTask<String, Integer, String> { 

    protected void onPreExecute() { 
     Log.d("MyAsyncTask","MyAsyncTask Started"); 
    } 

    protected String doInBackground(String... params) { 
     Log.d("MyAsyncTask",params[0] + " in background."); 
     publishProgress(params[0]); 
     return null; 
    } 

    protected void onProgressUpdate(Integer... values) { 
     Log.d("MyAsyncTask","onProgressUpdate - " + values[0]); 
    } 

    protected void onPostExecute(String result) { 
     Log.d("MyAsyncTask","onPostExecute " + result); 
    } 
} 
+0

这就是我所做的。 onPreExecute被调用,但onProgressUpdate和onPostExecute不是。 –

0

如果仍然具有现实意义: 尝试 publishProgress(Integer.valueOf(1))

相关问题