我已经实现了一个Android应用程序,其中包含两个部分(活动)
1-主要活动接收GP,计算地图上的X,Y像素 2-从SD卡加载后显示/滚动地图。
两个活动之间的交换是每20分钟由Intent和extras(地图上的X,Y图)进行的。
一切正常。
问题是我每次发送意图时都会创建一个新的地图,经过多次交换后应用程序崩溃。
是否可以在不创建新地图的情况下将数据传输到一个活动?或其他解决方案来修改第二个活动的OnCreate参数
感谢您的帮助
答案 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中的主要活动中。根据您的要求使用singleTask
或singleInstance
。
<activity android:name="com.app.activity" android:launchMode="singleTask" ...>
引自http://developer.android.com/guide/topics/manifest/activity-element.html#lmode:
<强> singleTask 强>
系统在新任务的根目录下创建活动并将意图路由到该任务。但是,如果活动的实例已经存在,系统会通过调用onNewIntent()方法将意图路由到现有实例,而不是创建新实例。
<强> singleInstance 强>
与“singleTask”相同,但系统不会在持有实例的任务中启动任何其他活动。活动始终是其任务的唯一成员。