Rom*_*iel 23 android android-activity
我正在努力解决我的应用中的问题.我想提供一种方法来列出以前打开的活动的历史.
我认为有两种可能的解决方案,但我不确定是否能找到一种稳定的方法来实现其中任何一种.
那么有没有办法使用SDK中的函数来做到这一点?
非常感谢.
编辑:
我有另一个想法,它有点不同.是否有可能使用某种接收器监听"开始/结束活动"事件到特定的应用程序(我的)并跟踪堆栈历史记录?
Pra*_*eep 30
使用ADB命令:
1. adb shell dumpsys activity activities -> displays list of activities in back stack
2. adb shell dumpsys activity process -> displays list process in back stack
3. adb shell dumpsys activity intents -> displays list of pending intents in back stack
4. adb shell dumpsys activity broadcast -> displays list of broadcast in back stack
5. adb shell dumpsys activity services -> displays list of services running in back stack
Run Code Online (Sandbox Code Playgroud)
使用活动管理器:
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();
}
Run Code Online (Sandbox Code Playgroud)
Com*_*are 20
那么有没有办法使用SDK中的函数来做到这一点?
不,对不起
是否有可能使用某种接收器监听"开始/结束活动"事件到特定的应用程序(我的)并跟踪堆栈历史记录?
如果您只支持API Level 14及更高版本(又称Android 4.0+),则可以使用registerActivityLifecycleCallbacks()on Application.
小智 5
您可以使用以下方法:
ActivityManager am = (ActivityManager)this.getSystemService(Context.ACTIVITY_SERVICE);
int sizeStack = am.getRunningTasks(2).size();
for(int i = 0;i < sizeStack;i++){
ComponentName cn = am.getRunningTasks(2).get(i).topActivity;
Log.d("", cn.getClassName());
}
Run Code Online (Sandbox Code Playgroud)
获取活动堆栈的列表.