|
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 |