使用ツール
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 - id textView プログラムから 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(); // タイマ処理を停止する } }
}