Android関連 > 非同期処理を行う(Android) 非同期処理を行う(Android) †Handler を使用する †public class AsyncTest1 extends Activity { Handler handler; @Override protected void onCreate(Bundle savedInstanceState) { ・ ・ handler = new Handler(); ・ ・ // ボタン押下時 View btn = findViewById(R.id.hoge_btn); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { handler.post(new Runnable(){ @Override public void run() { // ここで時間のかかる処理を行う } }); } }); } AsyncTaskを使用する †AsyncTaskを利用すれば Thread 等を意識することなく、比較的シンプルに非同期処理を記述する事ができる。 AsyncTask<Object, Integer, Boolean> task = new AsyncTask<Object, Integer, Boolean>() { // 非同期に行う処理(別スレッドで実行される) @Override protected Boolean doInBackground(Object... params) { // ここで時間のかかる処理を行う return true; // 処理結果を返却 } // 非同期処理が終わった後に行う処理(メインスレッドで実行される) @Override protected void onPostExecute(Boolean result) { if (result) { view1.setText("成功しました"); } else { view1.setText("失敗しました"); } } // 他に onPreExecute(非同期処理前)、onProgressUpdate(実行中処理) が記述できる } task.execute(); IntentService を使用する †TODO |