现象描述

这是一个横屏的App,AndroidManifest中配置了 shareUserId

android:sharedUserId="android.uid.system"

添加了开机启动广播

public class BootBroadcastReceiver extends BroadcastReceiver{    @Override    public void onReceive(Context context, Intent intent)    {        if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED"))        {            Intent i = new Intent(context, MainActivity.class);            i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);            context.startActivity(i);        }    }}

MainActivity配置了launchMode

        <activity            android:name="yqgj.ui.MainActivity"            android:screenOrientation="landscape"            android:windowSoftInputMode="stateHidden|adjustResize"            android:launchMode="singleTask"            >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>

此App装在了车载的一体机(Android4.4系统),当一体机开机后,App随之启动并到前台,此时通过log打印发现

 @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        System.out.println("重复OnCreate()");}

重复OnCreate()打印了两次,中间间隔5秒左右,之后所有onCreate里的方法都执行了两次

解决之道

1、有人说是因为横竖屏转换导致oncreate被执行了两次,检查了代码,发现程序里有用到高德离线地图

        <activity android:name="com.amap.api.maps.offlinemap.OfflineMapActivity"            android:screenOrientation="portrait"  />

于是把这个portrait改成了landscape,重新测试下无效,因为根本都不会打开这个OfflineMapActivity
2、横竖屏转换时要添加configChanges的配置

 android:configChanges="orientation|keyboardHidden" 

测试下来无效
3、还有人说用其他的启动模式,要这么说,相对而言也就singleInstance稍微合适了,测试下来也无效

正确方法

在主Activity配置清单中添加configChanges,原因是mcc值会发生变化,至于为啥会发生变化,不得而知

android:configChanges="mcc|mnc"

添加此配置后,即使mcc或者mnc发生变化,也不会重启
详情可参考博文 Launcher Activity在开机时重启两次解决办法

更多相关文章

  1. [APP] Android(安卓)开发笔记 006-使用短信验证SDK进行短信验证
  2. 解决Android(安卓)Studio和Android(安卓)SDK Manager无法在线更
  3. Android(安卓)Activity界面切换添加动画特效
  4. Android(安卓)7.0 https/tls证书配置问题
  5. 解决Android(安卓)Studio 和 Android(安卓)SDK Manager 无法在线
  6. 整理:Android自带、第三方需要添加依赖的控件
  7. Android中如何引入Lambda表达式
  8. 在RelativeLayout布局中可以设置标签的android:layout_toLeftO..
  9. Android(安卓)数据绑定视图 dataBinding

随机推荐

  1. 数据库Left join , Right Join, Inner Jo
  2. SQL Server 排序函数 ROW_NUMBER和RANK
  3. sql server 常用的几个数据类型
  4. SQLServer EVENTDATA()函数来获取DDL 触
  5. SQLServer Top语句参数化方法
  6. SQL server 随机数函数
  7. SQL SERVER 文件和文件组
  8. mssql 两表合并sql语句
  9. sqlserver 比较两个表的列
  10. Sql Server 数据库索引整理语句,自动整理