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

【Android】スレッドからトーストメッセージを表示する方法を解説

はじめに

本記事では、Androidアプリにおいて別スレッド(バックグラウンドスレッド)からトーストメッセージを表示する方法を、実際のサンプルコードとともにわかりやすく解説します。時間のかかる処理の進捗をユーザーへ通知したい場合などに役立つテクニックです。

実装手順

ステップ1:新規プロジェクトの作成

まずはAndroid Studioで新しいプロジェクトを作成しましょう。メニューから「File」⇒「New Project」を選択し、必要事項をすべて入力してプロジェクトを作成します。

ステップ2:activity_main.xml にコードを追加

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">
</RelativeLayout>

ステップ3:MainActivity.java にコードを追加

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

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
    Toast toast;
    Thread thread;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        toast = Toast.makeText(this, "This is a toast from Thread", Toast.LENGTH_SHORT);
        thread = new Thread(new Runnable() {
            @Override
            public void run() {
                for (int i=0; i<1000; i++){
                    try {
                        Thread.sleep(1000);
                        toast.show();
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        });
        thread.start();
    }
}

ステップ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」アイコンをクリックします。選択肢の中から接続済みのモバイルデバイスを指定すると、スマートフォンにアプリが起動され、以下のようにトーストが繰り返し表示されます。

【Android】スレッドからトーストメッセージを表示する方法を解説

コードのポイント

このサンプルでは、onCreate() 内で Toast.makeText() を使ってトーストオブジェクトを生成しています。その後、Thread の run() メソッド内でループ処理を行い、1秒間スリープするごとに toast.show() を呼び出すことで、一定間隔でトーストを表示し続けています。

通常、UIの操作はメインスレッド(UIスレッド)で行う必要がありますが、トーストは例外的にバックグラウンドスレッドからも表示できます。ただし、TextViewのテキスト変更など他のUI要素を更新する場合は、runOnUiThread() や Handler を使用してメインスレッド上で処理を実行するようにしてください。

  1. 【完全ガイド】Androidのメッセージ(SMS)をMacに転送・バックアップする方法

    Androidスマートフォンに保存されているテキストメッセージは、最も重要で機密性の高いデータの一つです。家族や友人とのやり取りはもちろん、銀行口座情報などの個人情報が含まれていることもあります。Androidデバイスを初期化したり、OSをアップグレードしたりする前には、必ずデータを安全な場所に保管しておきましょう。そのためにも、メッセージをMacにバックアップしておくことをおすすめします。ただし、大切なメッセージは他のバックアップファイルと混在させず、安全かつ独立した状態で保存したいものです。本記事では、AndroidからMacへメッセージを転送する方法を詳しく解説します。Androidのメ

  2. パソコンからテキストメッセージ(SMS)を送信する方法|Android Messagesの「ウェブ版メッセージ」活用ガイド

    GoogleとAppleのライバル関係は、今さら言うまでもないことでしょう。両社は新製品や新サービスの発表のたびに競い合ってきました。そんな中、Googleはメッセージングアプリ「Android Messages」に「ウェブ版メッセージ(Messages for web)」という新機能を追加し、アプリを大きく強化しました。この機能を使えば、パソコンのブラウザから直接テキストメッセージ(SMS)を送受信できます。Appleがいち早く提供していたiMessageと同等の機能として、Androidユーザーが最も待ち望んでいたもののひとつです。 ※なお、Android Messagesは現在「Goog