Я не уверен, что делаю неправильно, но onPostExecute никогда не вызывается.
Вызвал его из потока пользовательского интерфейса из основного действия, которое я выполнял:
new PostToOpenFeint.execute ();
OnPreExecute (), doInBackground (..) срабатывает, но по какой-то причине onPostExecute никогда не вызывается.
Заранее спасибо!
Дэйв
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();
сразу после onCreate of the Activity, тогда все будет работать нормально. Если я помещаю этот вызов, скажем, внутри слушателя кнопки.
settingsButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
new PostToOpenFeint.execute();
}
});
onPostExecute () никогда не вызывается, я не уверен, что я делаю не так. Ограничение, которое я прочитал, заключалось в том, чтобы вызвать это из потока пользовательского интерфейса, а я вызываю его из потока пользовательского интерфейса.