我是Android新手。
我有2个活动。 A和B. A是我的发射器活动。 现在在A活动中,我正在调用B Activity并完成A活动。
像这样,
Intent ib=new Intent(this,B.class);
startActivity(ib);
this.finish();
那么,当B活动处于活动状态时,A是否会保留在Backstack中?我正在使用默认启动模式。
提前谢谢。
编辑:::
好的,谢谢。现在我有一个问题,
我按照A-> B-> C。
的顺序呼叫3个活动当我打电话给另一项活动时,我正在完成当前的活动。 通过使用,
this.finish();
我也在C Activity中为后台堆栈添加日志。 这是我的backstack打印代码::
ActivityManager m = (ActivityManager) getApplicationContext().getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> runningTaskInfoList = m.getRunningTasks(10);
Iterator<ActivityManager.RunningTaskInfo> itr = runningTaskInfoList.iterator();
while (itr.hasNext()) {
ActivityManager.RunningTaskInfo runningTaskInfo = (ActivityManager.RunningTaskInfo) itr.next();
int id = runningTaskInfo.id;
CharSequence desc = runningTaskInfo.description;
int numOfActivities = runningTaskInfo.numActivities;
String topActivity = runningTaskInfo.topActivity
.getShortClassName();
Log.d("runningTaskInfoSize",runningTaskInfoList.size()+"");
Log.d("Stack :: ","C Start --------------------->");
Log.d("Stack ID ::",id+"");
Log.d("Stack NumOfActivity ::",numOfActivities+"");
Log.d("Stack Top Activity ::",topActivity+"");
}
现在,在日志中,当C是可见的时,我得到了这个:
D/Stack ::: C Start --------------------->
D/Stack ID ::: 29
D/Stack Desc ::: null
D/Stack NumOfActivity ::: 2
D/Stack Top Activity ::: .C
D/Stack ::: C Start --------------------->
D/Stack ID ::: 1
D/Stack Desc ::: null
D/Stack NumOfActivity ::: 1
D/Stack Top Activity ::: com.android.launcher2.Launcher
如果活动在完成后不会留在后台堆叠,那么为什么我得到'NumOfActivity ::: 2'?或者我的代码或理解有问题吗?
答案 0 :(得分:3)
不,如果您致电Activity A
,finish()
将不会留在Backstack中。
Here you can find the official documentation about it
使用finish()
,它会按此顺序拨打onPause()
,onStop()
和onDestroy()
。
如有任何进一步的信息,请询问,希望这个帮助
问题在于方法调用顺序:来自official Doc
生命周期回调的顺序已明确定义,尤其是在何时 这两个活动是在同一个过程中,一个是开始的 其他。这是活动A时发生的操作顺序 开始活动B:
活动A的onPause()方法执行。活动B onCreate(), onStart()和onResume()方法按顺序执行。 (活动B现在 有用户关注。)然后,如果屏幕上不再显示活动A, 它的onStop()方法执行。
因此,正如您所看到的,问题是您在Activity C
停止之前检查Activity B
中的活动计数。
答案 1 :(得分:0)
当你调用finish()时,它不会保留在backstack中
答案 2 :(得分:0)
没有ActivityA不会保留在Stack中。