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

Androidでスレッドを継続的に実行する方法【サンプルコード付き解説】

はじめに:Androidにおけるスレッドとは

具体例に入る前に、まずAndroidにおける「スレッド」について理解しておきましょう。スレッドは、汎用的な処理タスクを実行できる仕組みであり、ほぼあらゆる処理を担当できます。しかし、UI(ユーザーインターフェース)の更新だけはできないという重要な制約があります。これは、AndroidではUIの操作は基本的にメインスレッド(UIスレッド)からのみ行うべきとされているためです。

本記事では、そのようなスレッドを継続的(連続的)に実行し続ける方法を、実際のサンプルコードを交えながら解説します。

実装手順

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

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

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

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

<?xml version = "1.0" encoding = "utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android = "https://schemas.android.com/apk/res/android"
xmlns:app = "https://schemas.android.com/apk/res-auto"
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:text = "Continues thread"
android:textSize = "25sp"
app:layout_constraintBottom_toBottomOf = "parent"
app:layout_constraintLeft_toLeftOf = "parent"
app:layout_constraintRight_toRightOf = "parent"
app:layout_constraintTop_toTopOf = "parent" />
</android.support.constraint.ConstraintLayout>

このレイアウトには、画面中央に配置された TextView をひとつ設置しています。ユーザーがこのTextViewをタップすると、継続的なスレッドが起動し、処理結果がLogcatに出力される仕組みです。

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

続いて、src/MainActivity.java に以下のコードを記述します。

package com.example.andy.myapplication;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
   TextView text;
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      text = findViewById(R.id.text);
      text.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            new Thread(new Runnable() {
               @Override
               public void run() {
                while (true)
                Log.d("Continues thread", "Tutorialspoint.com");
               }
            }).start();
         }
      });
   }
}

ポイントは、while (true) による無限ループを使ってスレッドを止めずに回し続けている点です。これにより、TextViewをタップした瞬間からスレッドが継続的に動作し、Logcatへログが出力され続けます。

補足: 無限ループを含むスレッドはCPUリソースを消費し続けるため、実際のアプリ開発では適切な停止条件や中断フラグを用意することが推奨されます。また、定期的な繰り返し処理を行いたい場合は HandlerThread や Kotlin Coroutines を活用すると、より安全かつ効率的に実装できます。

アプリの実行と動作確認

それでは、アプリケーションを実行してみましょう。ここでは、実機のAndroidスマートフォンをパソコンに接続しているものとします。Android Studioでプロジェクト内のアクティビティファイルを開き、ツールバーの実行(Run)アイコンをクリックします。表示された選択肢から接続済みのモバイルデバイスを選ぶと、端末に以下のような初期画面が表示されます。

Androidでスレッドを継続的に実行する方法【サンプルコード付き解説】

上記のように初期画面が表示されたら、TextViewをタップしてみてください。すると、スレッドが継続的に実行され始めます。Android Studioの Logcat を確認すると、以下のようにログが連続して出力されていることがわかります。

Androidでスレッドを継続的に実行する方法【サンプルコード付き解説】

まとめ

本記事では、Androidでスレッドを継続的に実行する基本手法として、Thread クラスと while (true) ループを組み合わせたシンプルな実装例を紹介しました。スレッドはバックグラウンド処理の基礎となる概念なので、まずはこのサンプルで挙動を確認し、その後HandlerThreadやCoroutinesなど、より実践的な手法へステップアップすることをおすすめします。

  1. Phoenix OSでPCにAndroid環境を構築する方法|インストールから起動トラブルの解決まで

    Phoenix OS(フェニックスOS)は、Androidをベースに開発されたPC向けオペレーティングシステムです。WindowsパソコンとMacの両方に対応しており、現行バージョンではAndroid 7.1をサポート。ノートPC、デスクトップPC、タブレットなど幅広いデバイスでの動作を想定して設計されています。書き込み可能なストレージであれば、USBフラッシュドライブに収めて持ち運び、別のPCから起動することも可能です。 最大のメリットは、すでにインストール済みのWindowsやmacOSにまったく影響を与えない点です。軽量なOSなので、パーティションのルートディレクトリを大きく占有しませ

  2. Windows 11でAndroidアプリを実行する方法|Amazon Appstoreの導入手順とサイドロード術

    Windows 11のPCでもAndroidアプリが使えたら便利だと思いませんか?その夢はついに現実になりました。Windows 11では、サードパーティ製ソフトやエミュレーターを別途用意しなくても、Androidアプリを簡単に実行できます。鍵となるのが「Amazon Appstore」。Microsoft Storeからインストールすれば、厳選されたカタログの中からお気に入りのアプリやゲームを閲覧・インストールできるようになります。ただし注意点として、この機能はリリース当初、米国でのみサポートされていました。 スマートフォンだけでなくWindows PCでもアプリを活用したい——これは多く