定期動作
〜 Android Studio の使い方 8 〜
2023-05-15 作成 福島
TOP > androidstudio > timer

使用ツール

    Android Studio Flamingo | 2022.2.1 Patch 2  


1. 通常のプロジェクトを作成する。

ここでは TextView を利用して値を表示するので、画面の存在するプロジェクトを作成する。(画面の有無は本質でない)
「Empty Activity」「Empty Views Activity」等のプロジェクトが対象。
「No Activity」でも構わないが、Default Activity の追加が必要になるので、ここでは割愛する。(選択しない)


2. アクティビティにテキストボックスを配置する。

activity_main にテキストボックスを配置する。(動作確認用カウンタの値をこのテキストボックスに表示する)
要素名内容備考
アクティビティ/ app/ res/ layout/ activity_main.xml-
部品種類TextView-
idtextViewプログラムから R.id.textView として参照される。


3. 定期動作の実装

3-1. タイマイベントクラスの定義とハンドラ (開始・停止) を追加する。
クラス MainActivity (MainActivity.java) に以下を記述する。
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


cnt = 0; // 動作確認用カウンタを初期化 handler = new Handler(); // スレッドハンドラのインスタンスを生成 // タイマイベントハンドラ (開始) を登録する (1 秒間隔) final int TASK_INTERVAL = 1000; // milli second timer = new Timer(); timer.schedule(new RepeatTask(), 0, TASK_INTERVAL); // タイマイベントハンドラ (停止) を登録する (textView をタップして停止) findViewById(R.id.textView).setOnClickListener(new StopTask());
}
Integer cnt; // 動作確認用カウンタ Handler handler; // スレッドハンドラ (import android.os.Handler) // 繰り返すタスクを定義 private class RepeatTask extends TimerTask { @Override public void run() { handler.post(new DisplayAndCountUp()); } class DisplayAndCountUp implements Runnable { @Override public void run() { ((TextView) findViewById(R.id.textView)).setText(String.valueOf(cnt)); cnt += 1; } } } Timer timer; // スケジュール登録用タイマ (インスタンスは onCreate で生成する) // textView 用リスナを定義 private class StopTask implements View.OnClickListener { @Override public void onClick(View v) { timer.cancel(); // タイマ処理を停止する } }
}