使用OnCreate替代OnResume/OnRestart?

3

我有一些活动,假设是Activity A、B和C。 在Activity A中,我通过一个菜单和onOptionsItemSelected调用了B:

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

现在,当我在B活动中时,我可以用Intent和startactivity的方式调用A活动:如何处理它以调用A的OnResumeOnRestart方法,而不是OnCreate方法?

我正在记录它,每次从一个活动移动到另一个活动时,它总是调用OnCreate方法:我该怎么办?


你完成了B活动并想回到A吗?还是因为某些原因想保留B?如果是前者,只需调用finish()来结束B。 - Gabe Sechan
1
我建议你学习这个教程和代码示例:http://developer.android.com/training/basics/activity-lifecycle/index.html - StarsSky
3个回答

2

在manifest.xml中将你的Activity A配置为"singleTask"或"singleInstance"。然后,当你从Activity B调用Activity A时(假设Activity A已经被实例化),Activity A的onResume()方法将会被触发而不是onCreate()方法。这种配置方式存在一些缺点,请参考这里了解更多。

示例manifest:

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

0

1
你可以。我已经测试过了。 - wtsang02
3
仅仅因为你可以做某事,并不意味着你应该这样做。手动调用onCreate()会让我觉得代码存在严重问题,表明设计不良和滥用平台。 - Simon

0
我正在记录它,每当我从一个活动移动到另一个活动时,它总是调用OnCreate方法:我该怎么办?
要从Activity B返回Activity A,如果使用:
  • startActivity(),那么A的onCreate()将总是被调用。
  • finish(),则可能会调用A的onCreate(),也可能不会。(这取决于A是由您还是操作系统销毁的。)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接