学生「yukinut」の学び

専門学生の私が、学校や自己での学習内容、趣味のことなどをブログにしていきます。興味のある内容があれば見ていってください。

【Android Studio】Javaで任意の間隔で処理を繰り返す方法

Android StudioJavaを使って任意の間隔で処理を繰り返す方法を説明していきたいと思います。どのAPIレベルにまで対応しているかわかりませんがAPIレベル28では実行することができました。

AndroidManifestの設定

今回はAndroidManifestに入力するコードはありませんので入力しないで大丈夫です。

layoutの設定

次にlayoutに入力するコードです。上から2行目にある「androidx.constraintlayout.widget.ConstraintLayout」だけ消去して代わりに「LinearLayout」を入力します。

「tools:context=".MainActivity"」と「>」の間で改行し、android:orientation="vertical"」を入力してください。

「TextView~/>」は使わないので消去し、代わりにこちらを入力してください。

<Button
android:id="@+id/timerStartButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Start"
android:textSize="42sp" />

<Button
android:id="@+id/timerCancelButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Cancel"
android:textSize="42sp" />

Javaの設定

最後にメインであるJavaに入力するコードです。入力してもらいたい場所が3か所あります。

「public class MainActivity extends AppCompatActivity {」内の「AppCompatActivity」を「FragmentActivity」に変更してください。

「public class MainActivity extends FragmentActivity {」の下に書いてください。

Timer timer;

private final String LOG_TAG = "MainActivity : ";

変数などの宣言をしています。

「setContentView(R.layout.activity_main);」の下に書いてください。

timer = new Timer();

Button timerStartButton
= findViewById(R.id.timerStartButton);
Button timerCancelButton
= findViewById(R.id.timerCancelButton);

timerStartButton.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
timer.scheduleAtFixedRate(
new TimerTask() {
@Override
public void run() {
Log.i(LOG_TAG, "loop");
}
}, 100, 20000);
}
});

timerCancelButton.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
timer.cancel();
Log.i(LOG_TAG, "Timer canceld.");
timer = new Timer();
}
});

エラーが出ますが、エラーに対して「alt + enter」で消すことができます。

繰り返す間隔は自分で決めることができます。今回は20秒間隔にしてみました。

繰り返していることがわかるよう、logに「loop」と表示されるようになっていますので、実行したら下の方にある「logcat」を押して確認してください。

実行すると「Start」と「Cancel」ボタンが表示されます。「Start」を押すと繰り返しが実行されます。「Cancel」を押すと繰り返しが停止します。

まとめ

今回は、任意の間隔で処理を繰り返す方法を説明していきました。私も作り直しながら説明していったのでエラーや、入力ミスはないようにできていると思います。この方法で取得できなかった場合はコメントください。できる限り対処していきたいと思います。

アプリ開発は調べることがほとんどです。私はこのプログラムを作るまでにたくさんのサイトを見て回ることになってしまいました。皆さんには同じ思いをしてほしくないのでこのプログラムが役に立つことを祈っています。