1. ホーム
  2. android

[解決済み] あるアクティビティがアプリケーションのアクティビティスタックの最後の1つであるかどうかを確認するにはどうすればよいですか?

2022-06-22 18:54:54

質問

ユーザーが現在のアクティビティを終了したときに、ホーム画面に戻るかどうかを知りたいのですが。

どのように解決するのですか?

UPDATE(2015年7月)です。

以来 getRunningTasks() は非推奨になったので、API 21 からは、以下のようにするのがよいでしょう。 raukodraug 回答 または エド・バーネット 1 (私は2番目のものを好む)。



現在のタスクとそのスタックを確認する可能性があります。 アクティビティマネージャ .

そこで、あるアクティビティが最後のものであるかどうかを判断するために

  • マニフェストで android.permission.GET_TASKS のパーミッションを要求します。
  • 以下のコードを使用します。

    ActivityManager mngr = (ActivityManager) getSystemService( ACTIVITY_SERVICE );
    
    List<ActivityManager.RunningTaskInfo> taskList = mngr.getRunningTasks(10);
    
    if(taskList.get(0).numActivities == 1 &&
       taskList.get(0).topActivity.getClassName().equals(this.getClass().getName())) {
        Log.i(TAG, "This is last activity in the stack");
    }
    
    

上記のコードは、タスクが1つの場合のみ有効であることに注意してください。もし、あなたのアプリケーションに複数のタスクが存在する可能性があるのなら、他の タスクリスト 要素を確認する必要があります。タスクについてもっと読む タスクとバックスタック