2017-09-08 32 views
0

我是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

回答

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

生命週期的活動:

enter image description here

+0

所以,我應該什麼時候檢查回棧,我的意思是在哪種方法? – zephyr

+0

@zephyr如果你解釋一下你需要它,我可以幫助更多..說這樣看起來有點無用,而且也很棘手。你可能應該爲它創建一個接口。試着解釋一下你需要做的是什麼信息,也許有更簡單的方法:) –

+0

嗯,我正在學習活動啓動模式,所以我需要backStack登錄它。否則我將如何知道singleTop或singleTask啓動是否發生? – zephyr

0

當您致電完成()時,它不會留在背後堆棧

0

否ActivityA不會保留在堆棧中。

相關問題