我用谷歌搜索但没有找到有用的有用信息。如果我打开应用程序并完成这些活动A-B-C-D,应用程序在后台堆栈中有4个活动。 Android可以杀死进程,他实际上做了什么,恢复应用程序后我看到活动D,所以我如何处理这种行为,如何检查我在后台堆栈中有多少真正的活动。
我试过了:
ActivityManager mngr = (ActivityManager) getSystemService( ACTIVITY_SERVICE );
List<ActivityManager.RunningTaskInfo> taskList = mngr.getRunningTasks(10);
Log.d("myTag",taskList.get(taskList.size()-1).numActivities+"");
或
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");
}
但它在杀戮过程之前和之后显示相同的数字。
如果我的应用程序被终止,我想将用户重定向到actviity A,并且后退按下的事件将关闭应用程序。
答案 0 :(得分:2)
您应该使用onSavedInstanceState处理此问题。
指南说:
活动返回到用户关注的两种方式,其状态保持不变:活动被销毁,然后重新创建,活动必须恢复以前保存的状态,或活动停止,然后恢复,活动状态仍然存在完好。
因此,您应该保存实例状态并将其恢复到onRestoreInstanceState,然后您可以根据以前的活动状态执行所需操作。
点击此链接以获取参考:http://developer.android.com/guide/components/activities.html#ConfigurationChanges
希望它有所帮助。