2013-02-03 27 views
2

我有一些活動,讓我們說活動A,B和C 在活動AI調用B到一個菜單與onOptionsItemSelectedOnCreate而不是OnResume/OnRestart?

Intent main = new Intent (this, MainActivity.class); 
this.startActivity(main); 

現在,當我在B活動,我可以以相同的方式(以意向和初始活動)回撥A:我如何處理它以撥打OnResumeOnRestart方法而不是OnCreate

我在記錄它,並且隨時從一個活動轉移到另一個活動,它總是調用OnCreate方法:我該怎麼辦?

+0

你跟活動B完成,要回到A?還是因爲某種原因想要保持B?如果它的第一個,只需調用finish()並結束B. –

+1

我建議你學習這個教程和代碼示例http://developer.android.com/training/basics/activity-lifecycle/index.html – StarsSky

回答

0

您無法控制是直接調用OnCreate/OnResume/OnRestart方法。它是基於以前的活動是否仍在記憶中。

http://developer.android.com/guide/components/activities.html http://developer.android.com/images/activity_lifecycle.png

+1

[你可以。](http://stackoverflow.com/questions/13964943/why-do-oncreate-should-be-called-only-once-on-the-start-of-activity/13964977#13964977)我測試過它。 – wtsang02

+0

你每天都會學到新的東西。 – Aelexe

+3

只因爲你可以並不意味着你應該。手動調用onCreate()對我來說是一種巨大的代碼味道,並且表明糟糕的設計和濫用平臺。 – Simon

0

我記錄它,只要我從一個活動轉移到另一個,它總是調用onCreate方法:我能做些什麼?

從活動B返回到活動A,如果你使用:

  • startActivity(),那麼A的onCreate()總是被調用。
  • finish(),那麼A的onCreate()可能會或可能不會被調用。 (這取決於A是否已被您或操作系統破壞)
2

在manifest.xml中將活動A配置爲「singleTask」或「singleInstance」。然後,當您從Activity B調用Activity A(假設Activity A已經像您描述的那樣已經實例化)時,Acitivity A的onResume()將會觸發而不是onCreate()。這種配置存在缺陷,所以請閱讀this

例如清單:

<activity android:name=".YourActivityA"  
     android:configChanges="keyboardHidden|orientation"  
     android:launchMode="singleTask"> 
相關問題