[[Android関連]] > 非同期処理を行う(Android)
* 非同期処理を行う(Android) [#ue242a56]
#setlinebreak(on)
** Handler を使用する [#ob957ef1]
// http://android.keicode.com/basics/async-update.php
#mycode(){{
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() {
// ここで時間のかかる処理を行う
}
});
}
});
}
}}
&br;
** AsyncTaskを使用する [#c87f7fa4]
AsyncTaskを利用すれば Thread 等を意識することなく、比較的シンプルに非同期処理を記述する事ができる。
#mycode(){{
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();
}}
&br;
** IntentService を使用する [#zfa0feca]
// http://techbooster.org/android/application/1570/
#mycode(){{
TODO
}}