AsyncTask の使い方
あぁ、doInBackground() だけ実装しておいて、後は使うとき(execute()を呼び出すとき)に実装すればいいんじゃんということに気づいた...。なんか使いにくいと思ってたんだ...。
- MyTask.java
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; } }
- MyActivity.java
new MyTask() { @Override protected void onPostExecute(Object result) { if (result instanceof Exception) { // エラー表示 } else { // 正常なときの処理 } } }).execute();
みたいな感じですな。
onPostExecute()で実行したい処理はだいたい Context が必要だけど、そのContextを渡すためにコンストラクタをいじったり、それを省くためにインナークラスにしたりしていたんだけど、そんなことしなくてもよかったんだ。
などと思ったが、だめなやりかたかも...。