Android
 Computer >> コンピューター >  >> プログラミング >> Android

【Kotlin】Androidアプリでメソッドを10秒ごとに定期実行する方法

はじめに

この記事では、Kotlinを使用してAndroidアプリでメソッドを10秒ごとに繰り返し実行する方法を、実際のサンプルコードとともに解説します。一定間隔での定期処理は、データの自動更新やサーバーへのポーリングなど、さまざまな場面で役立つテクニックです。

仕組みの概要

今回の実装では、AndroidのHandlerクラスとpostDelayed()メソッドを組み合わせます。指定した遅延時間(10秒=10000ミリ秒)の経過後に処理を実行し、その処理の中で再び自分自身を登録することで、繰り返し実行を実現しています。また、アクティビティがバックグラウンドに移行した際(onPause)にはremoveCallbacks()で処理を解除し、無駄な動作やメモリリークを防ぐ点もポイントです。

ステップ1:新規プロジェクトを作成する

Android Studioを起動し、メニューから「File」→「New Project」を選択します。必要な項目をすべて入力して、新しいプロジェクトを作成してください。

ステップ2:レイアウトファイルを編集する

res/layout/activity_main.xml に以下のコードを追加します。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
    tools:context=".MainActivity">
    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="70dp"
        android:background="#008080"
        android:padding="5dp"
        android:text="TutorialsPoint"
        android:textColor="#fff"
        android:textSize="24sp"
        android:textStyle="bold" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="Running a method every Ten seconds"
        android:textColor="@android:color/holo_orange_dark"
        android:textSize="16sp"
        android:textStyle="bold" />
</RelativeLayout>

ステップ3:MainActivity.kt を編集する

src/MainActivity.kt に以下のコードを追加します。

import android.os.Bundle
import android.os.Handler
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
    var handler: Handler = Handler()
    var runnable: Runnable? = null
    var delay = 10000
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        title = "KotlinApp"
    }
    override fun onResume() {
        handler.postDelayed(Runnable {
            handler.postDelayed(runnable!!, delay.toLong())
            Toast.makeText(this@MainActivity, "This method will run every 10 seconds", Toast.LENGTH_SHORT).show()
        }.also { runnable = it }, delay.toLong())
        super.onResume()
    }
    override fun onPause() {
        super.onPause()
        handler.removeCallbacks(runnable!!)
    }
}

コードのポイント

  • postDelayed():指定した時間(ここでは10000ミリ秒)の経過後にRunnableを実行します。
  • 自己再帰的な登録:トーストを表示した後、再度postDelayed()を呼び出すことで、10秒ごとのループ処理を実現しています。
  • onPause()での後始末:removeCallbacks()を呼び出してタイマーを停止し、バックグラウンド中の不要な処理を防ぎます。

※ 補足:新しいAndroid SDKでは、引数なしのHandler()コンストラクタは非推奨となっています。Handler(Looper.getMainLooper())のようにLooperを明示的に指定すると、より安全に動作させられます。

ステップ4:AndroidManifest.xml を編集する

androidManifest.xml に以下のコードを追加します。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="com.example.q11">
    <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」【Kotlin】Androidアプリでメソッドを10秒ごとに定期実行する方法アイコンをクリックします。ドロップダウンから接続したモバイルデバイスを選択してください。

【Kotlin】Androidアプリでメソッドを10秒ごとに定期実行する方法

アプリを起動すると、10秒ごとに「This method will run every 10 seconds」というトーストメッセージが表示されます。これにより、メソッドが正しく定期実行されていることを確認できます。

  1. Androidで遅延処理後にメソッドを呼び出す方法【HandlerのpostDelayed活用】

    この記事では、Androidアプリにおいて指定した時間の遅延後にメソッドを呼び出す方法を解説します。HandlerクラスのpostDelayed()メソッドを使うことで、数行のコードで簡単に遅延処理を実装できます。手順1:新規プロジェクトを作成するAndroid Studioで新しいプロジェクトを作成します。メニューから「File」→「New Project」を選択し、必要な項目を入力してプロジェクトを作成しましょう。手順2:レイアウトファイル(res/layout/activity_main.xml)以下のコードをres/layout/activity_main.xmlに追加します。画面中央

  2. KotlinでAndroidアプリのGridViewスクロールを無効化する方法を徹底解説

    この記事では、Kotlinを使ってAndroidアプリのGridView(グリッドビュー)のスクロール機能を無効にする方法を、サンプルコードとともにわかりやすく解説します。GridViewは画像ギャラリーやメニュー表示などによく使われるUIコンポーネントですが、状況によってはスクロールさせたくないケースもあります。そのような場合に役立つテクニックです。実装の手順ステップ1:新規プロジェクトを作成するまず、Android Studioで新しいプロジェクトを作成します。メニューから「File」→「New Project」を選択し、必要な項目をすべて入力してプロジェクトを作成してください。ステップ2