AsyncTask の使い方

あぁ、doInBackground() だけ実装しておいて、後は使うとき(execute()を呼び出すとき)に実装すればいいんじゃんということに気づいた...。なんか使いにくいと思ってたんだ...。

public class MyTask extends AsyncTask<Object,Object,Object> {
  @Override
  protected Object doInBackground(Object... params) {
    Object result;
    try {
      // いろんな処理
    }
    catch (Exception e) {
      e.printStackTrace();
      return e;
    }
    return result;
  }
}
new MyTask() {
  @Override
  protected void onPostExecute(Object result) {
    if (result instanceof Exception) {
      // エラー表示
    } else {
      // 正常なときの処理
    }
  }
}).execute();

みたいな感じですな。


onPostExecute()で実行したい処理はだいたい Context が必要だけど、そのContextを渡すためにコンストラクタをいじったり、それを省くためにインナークラスにしたりしていたんだけど、そんなことしなくてもよかったんだ。
などと思ったが、だめなやりかたかも...。