「Android/handler」の版間の差分
ナビゲーションに移動
検索に移動
ページの作成:「==handlerの基本的な使い方== Handler handler = new Handler(); handler.post(new Runnable() { @Override public void run() { Log.i("test", "run()...」 |
|||
| (同じ利用者による、間の10版が非表示) | |||
| 1行目: | 1行目: | ||
==handlerの基本的な使い方== | ==handlerの基本的な使い方(UIスレッド(メインスレッド)で実行)== | ||
Handler handler = new Handler(); | Handler handler = new Handler(); | ||
handler.post(new Runnable() { | handler.post(new Runnable() { | ||
| 7行目: | 7行目: | ||
} | } | ||
}); | }); | ||
==マルチスレッドで実行中にUIスレッドに戻して実行する方法== | |||
public void run() { | |||
Handler handler = new Handler(); | |||
handler.post(new Runnable() { | |||
@Override | |||
public void run() { | |||
Log.i("test", "run()"); | |||
} | |||
}); | |||
} | |||
==遅延処理させてUIスレッドで返す== | |||
<pre> | |||
final Handler handler = new Handler(); | |||
handler.postDelayed(new Runnable() { | |||
public void run() { | |||
handler.post(new Runnable() { | |||
@Override | |||
public void run() { | |||
mLog.debug(TAG, "1000ms後遅延"); | |||
} | |||
}); | |||
} | |||
}, 1000L); // 1000ms後に処理 | |||
</pre> | |||
==5秒ごとに定期的に実行する方法== | ==5秒ごとに定期的に実行する方法== | ||
| 27行目: | 53行目: | ||
} | } | ||
} | } | ||
==5秒後に実行する方法== | |||
new Handler(Looper.getMainLooper()).postDelayed(new Runnable() { | |||
@Override | |||
public void run() { | |||
// 5秒後処理 | |||
} | |||
}, 5000); | |||
==handlerをUIスレッドでなくワーカースレッドで実行== | |||
HandlerThread handlerThread = new HandlerThread("custom_name1"); | |||
handlerThread.start(); | |||
Handler handler = new Handler(handlerThread.getLooper()); | |||
handler.post(new Runnable() { | |||
@Override | |||
public void run() { | |||
Log.i("test", "run()"); | |||
} | |||
}); | |||
==関連== | |||
[[Android/マルチスレッド]] [ショートカット] | |||
2019年9月11日 (水) 10:26時点における最新版
handlerの基本的な使い方(UIスレッド(メインスレッド)で実行)
Handler handler = new Handler();
handler.post(new Runnable() {
@Override
public void run() {
Log.i("test", "run()");
}
});
マルチスレッドで実行中にUIスレッドに戻して実行する方法
public void run() {
Handler handler = new Handler();
handler.post(new Runnable() {
@Override
public void run() {
Log.i("test", "run()");
}
});
}
遅延処理させてUIスレッドで返す
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
handler.post(new Runnable() {
@Override
public void run() {
mLog.debug(TAG, "1000ms後遅延");
}
});
}
}, 1000L); // 1000ms後に処理
5秒ごとに定期的に実行する方法
public class MainActivity extends AppCompatActivity {
Handler mHandler = new Handler();
private Runnable mHandlerTask = new Runnable() {
@Override
public void run() {
Log.i("test", "run()");
// 5秒後に実行
mHandler.postDelayed(mHandlerTask, 5000L);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初回呼び出し
mHandler.post(mHandlerTask);
}
}
5秒後に実行する方法
new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
@Override
public void run() {
// 5秒後処理
}
}, 5000);
handlerをUIスレッドでなくワーカースレッドで実行
HandlerThread handlerThread = new HandlerThread("custom_name1");
handlerThread.start();
Handler handler = new Handler(handlerThread.getLooper());
handler.post(new Runnable() {
@Override
public void run() {
Log.i("test", "run()");
}
});
関連
Android/マルチスレッド [ショートカット]