2,564 views
この記事は最終更新から 2238日 が経過しています。
1. やりたいこと
度々コピペしたくなるマルチスレッド処理のひな形を何パターンか書いておく。
2. やってみる!
【その 1】 Runnableと Handler
下記のプログラムでは、アプリがアクティブ時のみスレッドを動かしている。
以下のタイミングでスレッドを開始、終了している。
・AppCompatActivity::onResume() スレッド開始
・AppCompatActivity::onPause() スレッド終了
※別にどこでやってもよい。
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends AppCompatActivity {
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override protected void onResume() {
super.onResume();
StartThread(); // スレッドを開始
}
@Override protected void onPause() {
super.onPause();
StopThread(); // スレッドを終了
}
private final Handler m_handler = new Handler();
private Runnable m_runnable;
protected void StartThread(){
m_runnable = new Runnable() { // スレッドを生成
int cnt = 0;
@Override public void run() {
Log.d("MainActivity", "cnt : " + cnt); cnt++;
m_handler.postDelayed(this, 1000); // 1000msスリープ
}
};
m_handler.post(m_runnable); // スレッドを起動
}
protected void StopThread(){
m_handler.removeCallbacks(m_runnable); // スレッドを終了
}
}
アクセス数(直近7日): ※試験運用中、BOT除外簡易実装済2025-12-09: 0回 2025-12-08: 2回 2025-12-07: 1回 2025-12-06: 1回 2025-12-05: 1回 2025-12-04: 0回 2025-12-03: 1回