我已经实现了一个包含两个部分(活动)的 Android 应用程序
1- 主要活动接收 GP,在地图上计算 X、Y 像素
2- 从 SD 卡加载地图后显示/滚动地图。
Intent 和 extras 每 20 秒进行一次这两项活动之间的交换(地图上的 X、Y 图)
一切正常。
问题是每次我发送意图时,我都会创建一个新地图,并且在多次交换后应用程序崩溃。
是否可以在不创建新地图的情况下将数据传输到一项活动?或修改第二个活动的 OnCreate 参数的其他解决方案
感谢帮助
添加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”相同,只是系统不会在持有该实例的任务中启动任何其他活动。活动始终是其任务的唯一且唯一的成员。
正是因为每次切换活动时都会运行 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()