2,111 views
この記事は最終更新から 1876日 が経過しています。
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); // スレッドを終了 } }