我不确定自己做错了什么,但是onPostExecute从未被调用。
- 创建了一个名为BaseActivity.java的基类。
- 在原始Activity中扩展了这个类。
- 将PostToOpenFeint类放置在BaseActivity中。
通过从主Activity的UI线程调用它来执行:
new PostToOpenFeint.execute();
执行onPreExecute()和doInBackground(..),但由于某种原因,onPostExecute从未被调用。
提前感谢您!
Dave
private class PostToOpenFeint extends AsyncTask<Void, Void, Void> {
/*
* (non-Javadoc)
*
* @see android.os.AsyncTask#doInBackground(Params[])
*/
@Override
protected Void doInBackground(Void... params) {
// does all the work here
return null;
}
/*
* (non-Javadoc)
*
* @see android.os.AsyncTask#onPostExecute(java.lang.Object)
*/
@Override
protected void onPostExecute(Void result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
Toast.makeText(MainScreen.this, "Done syncing", Toast.LENGTH_LONG).show();
}
/*
* (non-Javadoc)
*
* @see android.os.AsyncTask#onPreExecute()
*/
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
Toast.makeText(MainScreen.this, "About to sync all your scores", Toast.LENGTH_LONG).show();
}
我进一步研究了一下,这是我观察到的情况。例如,如果我进行以下调用:
new PostToOpenFeint.execute();
如果我在Activity的onCreate方法之后立即调用它,那么一切正常。但是,如果我将这个调用放到按钮监听器中,就会出现问题。
settingsButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
new PostToOpenFeint.execute();
}
});
onPostExecute()从未被调用,不确定我做错了什么。我读到的限制是从UI线程调用它,而我正在从UI线程调用它。