20

アクティビティ バック スタック A -> B -> C -> D -> E を含むアプリケーションがあります。アクティビティ E で、移動元のバック スタック アクティビティを知りたいと考えています。どうすればこれを見つけることができますか??

4

7 に答える 7

6

以下のコードを使用して、バックスタック内のすべてのタスクと各タスク内の上位のアクティビティを抽出できます

ActivityManager m = (ActivityManager) ctx.getSystemService( ctx.ACTIVITY_SERVICE );
List<RunningTaskInfo> runningTaskInfoList =  m.getRunningTasks(10);
Iterator<RunningTaskInfo> itr = runningTaskInfoList.iterator();
while(itr.hasNext()){
    RunningTaskInfo runningTaskInfo = (RunningTaskInfo)itr.next();
    int id = runningTaskInfo.id;
    CharSequence desc= runningTaskInfo.description;
    int numOfActivities = runningTaskInfo.numActivities;
    String topActivity = runningTaskInfo.topActivity.getShortClassName();
}
于 2011-11-03T09:32:01.863 に答える
4

「adb shell dumpsys activity activities」 コマンドを使用できます

参考までにhttp://www.onsandroid.com/2015/01/find-back-stack-activities-in-android.html

于 2015-01-08T13:25:53.243 に答える
1

registerActivityLifecycleCallbacks のこの API を介して、アクティビティの変更をリッスンすることでそれを行うことができると思います。

https://developer.android.com/reference/android/app/Application.html#registerActivityLifecycleCallbacks(android.app.Application.ActivityLifecycleCallbacks)

https://developer.android.com/reference/android/app/Application.ActivityLifecycleCallbacks.html

これは、独自のクラスのスタックに追加し、必要に応じて完全な状態を確認するのに役立ちます。

于 2016-02-27T18:08:42.207 に答える
0

実際には、getRunningTasksを使用してrunningtaskinfoからタスクIDを取得し、次にgetRecentTasksを使用してタスクIDを比較してrecenttaskinfoを取得できます。これで、recenttaskinfoのbaseintentを使用して、startactivityを使用してそのアクティビティを再開できます。

于 2012-03-29T07:34:16.737 に答える
0

よくわかりません...前の活動に戻りたいですか?その場合は、現在のアクティビティを終了すると、前のアクティビティに戻ります。

于 2011-11-03T09:26:39.560 に答える
0

activity-call を取得するには、startActivityForResultの代わりにを使用することをお勧めします。startActivityorigin/sourcegetCallingActivity().getClassName()

A はそれが家から来たことをどのようにして知ることができますか? getIntent()その使用

getAction() -> android.intent.action.MAIN

getCategories() -> android.intent.category.LAUNCHER

于 2015-08-30T01:30:57.580 に答える