Androidで10秒ごとにメソッドを自動実行する方法|HandlerとRunnableの実装手順を解説
Androidアプリ開発では、「一定間隔で同じ処理を繰り返し実行したい」というケースがよくあります。例えば、定期的なデータ更新、タイマー表示、ステータスの監視などが挙げられます。
本記事では、HandlerとRunnableを使って、10秒ごとに指定したメソッドを自動的に実行する方法を、サンプルコード付きでわかりやすく解説します。
実装の全体像
今回の仕組みはシンプルです。HandlerのpostDelayed()メソッドを使い、指定した遅延時間(今回は10秒=10000ミリ秒)後にRunnableを実行します。そして、そのRunnableの中で自分自身を再度登録することで、処理が無限に繰り返される仕組みを作ります。
Step 1:新規プロジェクトを作成する
まず、Android Studioで新しいプロジェクトを作成しましょう。メニューから「File」→「New Project」を選択し、必要な項目を入力してプロジェクトを作成してください。テンプレートは「Empty Activity」で問題ありません。
Step 2:レイアウトファイル(activity_main.xml)を編集する
res/layout/activity_main.xmlに以下のコードを記述します。ここでは、画面中央に「Hello World!」と表示するだけのシンプルなレイアウトを用意しています。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" />
</LinearLayout>
Step 3:MainActivity.javaに定期実行のロジックを書く
次に、src/MainActivity.javaに以下のコードを追加します。これが今回の核心部分です。
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.os.Handler;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
Handler handler = new Handler();
Runnable runnable;
int delay = 10000; // 10秒(ミリ秒単位)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
protected void onResume() {
handler.postDelayed(runnable = new Runnable() {
public void run() {
// 自分自身を再度スケジュールすることで繰り返し実現
handler.postDelayed(runnable, delay);
Toast.makeText(MainActivity.this,
"このメソッドは10秒ごとに実行されています",
Toast.LENGTH_SHORT).show();
}
}, delay);
super.onResume();
}
@Override
protected void onPause() {
// アクティビティが非表示になったらハンドラーを停止
handler.removeCallbacks(runnable);
super.onPause();
}
}
コードのポイント
- delay = 10000:遅延時間はミリ秒で指定します。10秒なら「10000」となります。
- onResume():アクティビティが前面に表示されたタイミングで、定期実行を開始します。
- run()内での再登録:
run()の中で再度postDelayed()を呼ぶことで、処理がループし続けます。 - onPause():アクティビティがバックグラウンドに回った際に
removeCallbacks()で処理を停止します。これにより、不要な処理やメモリリークを防ぐことができます。
Step 4:AndroidManifest.xmlを確認する
androidManifest.xmlには、通常のプロジェクト作成時に自動生成される内容で問題ありません。参考として以下にコードを示します。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
package="app.com.sample">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
アプリを実行して動作を確認しよう
それでは、アプリを実行してみましょう。実機のAndroidスマートフォンをパソコンに接続している場合は、Android Studioでプロジェクト内の任意のアクティビティファイルを開き、ツールバーのRun(実行)アイコンをクリックします。
デバイス選択ダイアログが表示されたら、接続したスマートフォンを選択してOKを押してください。アプリが起動すると、デフォルト画面が表示され、10秒ごとにトーストメッセージが表示されることが確認できます。
補足:より現代的な代替手段について
上記のHandler+Runnableの組み合わせは古典的かつ確実な方法ですが、近年のAndroid開発では以下のような選択肢もあります。
- Coroutine(コルーチン):Kotlinを使用している場合、
delay()関数を使った定期処理が簡潔に書けます。 - WorkManager:アプリが終了しても継続したいバックグラウンド処理に適しています。
- Timer / ScheduledExecutorService:Java標準の機能を使いたい場合に有効です。
用途やライフサイクルの要件に応じて、最適な方法を選択してください。ただし、UIスレッド上で簡単に定期処理を行うなら、本記事で紹介したHandler方式が最も手軽です。
-
Phoenix OSでPCにAndroid環境を構築する方法|インストールから起動トラブルの解決まで
Phoenix OS(フェニックスOS)は、Androidをベースに開発されたPC向けオペレーティングシステムです。WindowsパソコンとMacの両方に対応しており、現行バージョンではAndroid 7.1をサポート。ノートPC、デスクトップPC、タブレットなど幅広いデバイスでの動作を想定して設計されています。書き込み可能なストレージであれば、USBフラッシュドライブに収めて持ち運び、別のPCから起動することも可能です。 最大のメリットは、すでにインストール済みのWindowsやmacOSにまったく影響を与えない点です。軽量なOSなので、パーティションのルートディレクトリを大きく占有しませ
-
Windows 11でAndroidアプリを実行する方法|Amazon Appstoreの導入手順とサイドロード術
Windows 11のPCでもAndroidアプリが使えたら便利だと思いませんか?その夢はついに現実になりました。Windows 11では、サードパーティ製ソフトやエミュレーターを別途用意しなくても、Androidアプリを簡単に実行できます。鍵となるのが「Amazon Appstore」。Microsoft Storeからインストールすれば、厳選されたカタログの中からお気に入りのアプリやゲームを閲覧・インストールできるようになります。ただし注意点として、この機能はリリース当初、米国でのみサポートされていました。 スマートフォンだけでなくWindows PCでもアプリを活用したい——これは多く