不使用oncreate在活动之间交换数据

时间:2011-11-20 11:03:23

标签: java android oncreate

我已经实现了一个Android应用程序,其中包含两个部分(活动)

1-主要活动接收GP,计算地图上的X,Y像素 2-从SD卡加载后显示/滚动地图。

两个活动之间的交换是每20分钟由Intent和extras(地图上的X,Y图)进行的。

一切正常。

问题是我每次发送意图时都会创建一个新的地图,经过多次交换后应用程序崩溃。

是否可以在不创建新地图的情况下将数据传输到一个活动?或其他解决方案来修改第二个活动的OnCreate参数

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

它正在崩溃,因为每次切换活动时都会运行onCreate。它每次都会启动一个新活动,因此每个活动都有多个实例,并且内存不足。

要阻止这种情况发生,你应该在意图上设置一个标志,如:

int iflags = Intent.FLAG_ACTIVITY_REORDER_TO_FRONT;
Intent i = new Intent("com.you.yourapp.yourotheractivity");
i.setFlags(iflags);
// Apply your extras
startActivity(i);

如果该标志位于后台,则该标志将使其重用其他活动,因此onCreate()仅在第一次运行,此后仅运行onResume()

答案 1 :(得分:0)

android:launchMode添加到AndroidManifest.xml中的主要活动中。根据您的要求使用singleTasksingleInstance

<activity android:name="com.app.activity" android:launchMode="singleTask" ...>


引自http://developer.android.com/guide/topics/manifest/activity-element.html#lmode

<强> singleTask

  

系统在新任务的根目录下创建活动并将意图路由到该任务。但是,如果活动的实例已经存在,系统会通过调用onNewIntent()方法将意图路由到现有实例,而不是创建新实例。

<强> singleInstance

  

与“singleTask”相同,但系统不会在持有实例的任务中启动任何其他活动。活动始终是其任务的唯一成员。