Подтвердить что ты не робот

Как найти действия стека в приложении Android?

У меня есть приложение с действиями back stack A → B → C → D → E. Теперь в действии E, я хочу знать, какие операции назад назад я начал перемещаться. Как это найти?

4b9b3361

Ответ 1

Нижеприведенный код может быть использован для извлечения всех задач и верхнего действия в каждой задаче в фоновом стеке

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();
}

Ответ 3

Я думаю, вы можете сделать это, прослушивая изменения в действиях, используя этот API-интерфейс registerActivityLifecycleCallbacks:

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

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

Это поможет вам добавить в стек ваших собственных классов и увидеть полное состояние по своему усмотрению.

Ответ 4

Я не уверен, что все хорошо... Вы хотите вернуться к предыдущей деятельности? Если это так, закончите текущую деятельность, вы вернетесь к предыдущей.

Ответ 5

на самом деле, вы можете получить идентификатор задачи из runtaskinfo, используя getRunningTasks а затем, запустите lasttaskinfo с помощью getRecentTasks, сравните идентификатор задачи. теперь вы можете перезапустить эту активность, используя startactivity, с базовым элементом в файле currenttaskinfo.

Ответ 6

Поскольку getRunningTasks(..) устарел или если вы не хотите добавлять специальные разрешения для своего приложения, это альтернативное решение, если все ваши действия являются вашими: вы можете пометить идентификатор (а не сами действия, это может быть в необходимо собрать мусор) в одноэлементном режиме Stack, LinkedList или LinkedHashSet: in onPause() добавить идентификатор в стек и удалить его в onResume().

Вы можете проверить содержимое этих стеков, чтобы узнать, есть ли какое-либо действие и последовательность, которую они создали.

Вы можете очистить свой код и забыть сделать это вручную, если все ваши действия основаны на общем базовом действии для вашего приложения.

Ответ 7

Я рекомендую вам использовать startActivityForResult вместо startActivity, затем для извлечения события-источника-источника getCallingActivity(). getClassName().

Как узнать, что это произошло из дома? Используйте getIntent() его getAction() → android.intent.action.MAIN и getCategories() → android.intent.category.LAUNCHER