コールバックを使用します。
MyCallback.java
public interface MyCallback<T> {
public void onComplete(T result);
}
MyAsyncTask.java
public class MyAsyncTask extends AsyncTask<Void, Void, Boolean> {
private MyCallback<Boolean> mCallback;
public MyAsyncTask(MyCallback<Boolean> callback) {
mCallback = callback;
}
@Override
protected void onProgressUpdate(Void... progress) {
super.onProgressUpdate(progress);
// ...
}
@Override
protected Boolean doInBackground(Void... params) {
// ...
}
@Override
protected void onPostExecute(Boolean result) {
if (mCallback != null) {
mCallback.onComplete(result); // will call onComplete() on MyActivity once the job is done
}
}
}
この例では、このコールバックは引数として何も受け取らず、を返しますBoolean
。
今、あなたがしなければならないのは、あなたの呼び出しクラス(MyActivity
例えば)に実装させることMyCallback
です:
public class MyActivity extends Activity implements MyCallback<Boolean> {
// ...
xxx {
MyAsyncTask myAsyncTask = new MyAsyncTask(this); // the callback
myAsyncTask.execute();
}
// ...
@Override
protected void onComplete(Boolean result) {
// ...
}
}
これは私がしていることであり、非常にうまく機能します。