完成后调用();目前的活动,它会保持在BackStack或没有?
我是Android新手。完成后调用();目前的活动,它会保持在BackStack或没有?
我有2个活动。 A和B. A是我的发射器活动。 现在,在A活动中,我打电话给B活动并完成A活动。
这样的事情,
Intent ib=new Intent(this,B.class);
startActivity(ib);
this.finish();
所以,当B活动将被激活,A会留在堆栈中或不?我正在使用默认启动模式。
预先感谢您。
编辑:::
好的,谢谢。
现在我有一个问题,
我打电话顺序3个活动A-> B->℃。
当我打电话给另一个活动时,我正在完成当前活动。 通过使用,
this.finish();
我也在C Activity中放置了日志堆栈。 这里是我的堆栈中打印代码::
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' ??或者我的代码或理解有问题吗?
不,如果您拨打finish()
,Activity A
不会留在后台堆栈中。 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 B
停止前请检查活动计数Activity C
。
生命周期的活动:
当您致电完成()时,它不会留在背后堆栈
否ActivityA不会保留在堆栈中。
https://developer.android.com/guide/components/activities/tasks-and-back-stack.html –
什么是你确切的问题? –
我想知道,如果完成后(); ,活动不会留在回栈中,那么为什么它显示没有活动= 2?,正如我上面提到的那样。 – zephyr