2013-02-03 28 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"> 
相关问题