(16) マルチスレッド処理のひな形

投稿者: | 2018年10月2日

この記事は最終更新から 766日 が経過しています。

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);  // スレッドを終了
    }
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)