完成后调用();目前的活动,它会保持在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' ??或者我的代码或理解有问题吗?

+0

https://developer.android.com/guide/components/activities/tasks-and-back-stack.html –

+0

什么是你确切的问题? –

+0

我想知道,如果完成后(); ,活动不会留在回栈中,那么为什么它显示没有活动= 2?,正如我上面提到的那样。 – zephyr

不,如果您拨打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

生命周期的活动:

enter image description here

+0

所以,我应该什么时候检查回栈,我的意思是在哪种方法? – zephyr

+0

@zephyr如果你解释一下你需要它,我可以帮助更多..说这样看起来有点无用,而且也很棘手。你可能应该为它创建一个接口。试着解释一下你需要做的是什么信息,也许有更简单的方法:) –

+0

嗯,我正在学习活动启动模式,所以我需要backStack登录它。否则我将如何知道singleTop或singleTask启动是否发生? – zephyr

当您致电完成()时,它不会留在背后堆栈

否ActivityA不会保留在堆栈中。