1

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

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

Intent 和 extras 每 20 秒进行一次这两项活动之间的交换(地图上的 X、Y 图)

一切正常。

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

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

感谢帮助

4

2 回答 2

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 的报价:

单任务

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

单实例

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

于 2011-11-20T12:21:10.067 回答
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()

于 2011-11-20T11:35:29.700 回答