startActivity应该始终运行已启动的活动onCreate吗?

时间:2010-08-10 21:49:25

标签: java android

我有一项主要活动和一项子活动。 主活动使用startActivity启动子活动,并传递intent中的对象。 子活动在onCreate操作中从intent中读取对象。 子活动更新对象,然后使用startActivity返回主活动,再次传回更新的对象。 但是,不调用onCreate函数的主要活动,因此它包含的用于读取传递对象的代码不会运行。

进一步的调查表明onPause事件的主要活动是触发,即它仅在子活动运行时暂停,所以当子活动再次启动主活动时,它只是onResumes。

如果我将数据恢复/存储活动移动到onResume和onPause事件,是否有人知道是否会有任何缺点? 我不是在使用onCreate savedInstanceState,我应该吗?

如何在不使用数据库或这些首选项的情况下在活动之间传递一组数据项?我应该使用数据库吗?我有大约20个相当个人的数据项。

非常感谢任何帮助,

  • 弗林克

4 个答案:

答案 0 :(得分:7)

我会查看startActivityForResult()方法,而不仅仅是startActivity()

这应该为您提供一种将事物传递回调用活动的方法。

来自http://developer.android.com/reference/android/app/Activity.html

  

有时您希望在活动结束时从结果中获取结果。例如,您可以启动一项活动,让用户在联系人列表中选择一个人;当它结束时,它返回被选中的人。要执行此操作,请使用标识该调用的第二个整数参数调用startActivityForResult(Intent,int)版本。结果将通过onActivityResult(int,int,Intent)方法返回。

答案 1 :(得分:1)

查看活动生命周期here

另外,请考虑使用StartActivityForResult开始您的子活动。

答案 2 :(得分:0)

更有可能调用onResume()或onStart(),具体取决于子活动及其控制程度。

在图表中查看此页面大约3/4。

http://developer.android.com/guide/topics/fundamentals.html alt text

父对象永远不会被破坏,因此不必重新创建它。它应该暂停。您可以像onCreate()一样覆盖onResume()和onStart()。

编辑:子活动中是否有给用户的任何内容?听起来你实际上并不需要一个只需要一个可以调用方法的java类的活动。

答案 3 :(得分:0)

为什么不从主活动中调用startActivityForResult并将数据返回onActivityResult?这是正常的做法。