Androidアプリ開発

Activityの待機と復帰
moveTaskToBack & moveTaskToFront

この記事は約8分で読めます。
記事内に広告が含まれています。
スポンサーリンク

この記事は Androidスマホ用のアプリ開発の中で、
今後の開発で再使用性が高いと思われるコーディングをまとめたものです。
Java での開発経験、XML構文規則、Android のアプリ開発経験がある方を対象としています。
Android のアプリ開発でお役にたててれば、嬉しいです。
(これから Android のアプリ開発や Java での開発を始めたい方への案内は、
記事の最後で紹介します)

この記事のテーマ


実行中のActivityをバックグランドで待機、待機からの復帰を実装する

SIMフリーのモバイルWiFiを検討していならこれがオススメです。

ポイント

Androidでアプリを完全に終了させる方法はありません。
ActivityのライフサイクルでonDestroyが実行された状態を終了、onPauseまで実行された状態を中断(待機)と区別します。
中断の場合はonResumeから再開され、終了の場合はonCreateから再開と動作に違いがあります。
アプリの画面(Activity)からサービス(Service)の起動で画面をバックグランドに移動させ、サービスの終了でバックグランドにある画面を呼び出す実装方法を紹介します。

アクティビティのライフサイクル

moveTaskToBack

Activityを中断(待機)する場合、moveTaskToBackを使用します。
Intentに起動するServiceをセットし、startForegroundServiceの実行します。

    :
    // キャプチャを取得する
    private void capture(Intent intent) {
        intent.setClass(this, SnapService.class);
        intent.setAction(SnapService.START);
        startForegroundService(intent);
        moveTaskToBack(true);
    }
    :

サンプルでは、MediaProjectionを使用するためのIntentServiceに引き渡しています。

moveTaskToFront

ServiceからActivityを再開する場合、moveTaskToFrontを使用します。
ActivityManagerを取得、Activityで実行中のTaskmoveTaskToFrontで呼び戻します。

    :
    @Override
    public void onDestroy() {
        super.onDestroy();
        stopForeground(true);
        ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
        List<ActivityManager.AppTask> appTasks = activityManager.getAppTasks();
        if (!appTasks.isEmpty()) {
            if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.Q) {
                activityManager.moveTaskToFront(appTasks.get(0).getTaskInfo().taskId, 0);
            } else {
                activityManager.moveTaskToFront(appTasks.get(0).getTaskInfo().id, 0);
            }
        }
    }
    :

moveTaskToFrontはAndroid10以上とAndroid9以下で引き渡す値が異なります。

moveTaskToFrontTaskの順番を変更するにはREORDER_TASKS権限が必要です、

<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">
    :
    <uses-permission android:name="android.permission.REORDER_TASKS" />
    :
</manifest>

今回は、ここまでです。

実行中のActivityをバックグランドで待機、待機からの復帰を実装しているAndroidアプリです。

誤字脱字、意味不明でわかりづらい、
もっと詳しく知りたいなどのご意見は、
このページの最後にある
コメントか、
こちらから、お願いいたします♪

ポチッとして頂けると、
次のコンテンツを作成する励みになります♪

ブログランキング・にほんブログ村へ

これからAndroidのアプリ開発やJavaでの開発を始めたい方へ

アプリケーション開発経験がない方や、アプリケーション開発経験がある方でも、Java や C# などのオブジェクト指向言語が初めての方は、Android のアプリ開発ができるようになるには、かなりの時間がかかります。
オンラインスクールでの習得を、強くおススメします。

未経験者からシステムエンジニアを目指すのに最適です。まずは無料相談から♪

未経験者からプログラマーを目指すのに最適です。まずは無料カウンセリングから♪

カリキュラムとサポートがしっかりしています。お得なキャンペーンとかいろいろやっています♪

ゲーム系に強いスクール、UnityやUnrealEngineを習得するのに最適です。まずは無料オンライン相談から♪

参考になったら、💛をポッチとしてね♪

スポンサーリンク
msakiをフォローする
スポンサーリンク

コメント欄

タイトルとURLをコピーしました