Launcher Activity在开机时重新启动两次解决的方法

今天在看log的时候发现,Launcher activity会被onDestroy掉一次。然后再重新启动。

可能原因推測:

1.横竖屏切换

2.MCC MNC等Configuration改变引起的 MCC(移动国家码)和 MNC(移动网络码)

因为当时的Launcher设置为强制横屏了。应该是不会引起重新启动的。

对于Configuration改变系统会发一个android.intent.action.CONFIGURATION_CHANGED的广播

于是就做了一个广播接收器去检測是不是因为Configuration改变引起的(后来发现Launcher本身有监听这个广播)

果然发现MCC值由0(没有定义)变为460(中国)

原因已经初步确定了,怎么才干让activity不重新启动呢?

既然是activity重新启动,那就先去看一下activity有什么属性能够防止重新启动....

运气实在是好,刚好有这么个属性:

android:configChanges=["mcc", "mnc", "locale",
                                 "touchscreen", "keyboard", "keyboardHidden",
                                 "navigation", "screenLayout", "fontScale", "uiMode",
                                 "orientation", "screenSize", "smallestScreenSize"]

官方的解释是这种:

Lists configuration changes that the activity will handle itself. When a configuration change occurs at runtime, the activity is shut down and restarted by default, but declaring a configuration with this attribute will prevent the activity from being restarted.
Instead, the activity remains running and itsonConfigurationChanged() method is called.

大致意思也就是说:

那些被列举的属性configuration改变时activity是否保存自己的状态。当应用发生了configuration改变,默认情况下activity将关闭并重新启动自身,可是假设定义了这个属性。activity将不必重新启动。它将保持执行状态同一时候调用onConfigurationChanged()方法。也就是说当不配置android:configChanges="mcc|mnc"时,当mcc或mnc的值发生改变的时候,会重新启动activity,而且onConfigurationChanged()不会被调用

果然配置了这个属性后Launcher Activity就不会在开机时候启动两次了。

时间: 2024-12-16 22:16:58

Launcher Activity在开机时重新启动两次解决的方法的相关文章

Launcher Activity在开机时重启两次解决办法

今天在看log的时候发现,Launcher activity会被onDestroy掉一次,然后再重启. 可能原因猜测: 1.横竖屏切换 2.MCC MNC等Configuration改变引起的 MCC(移动国家码)和 MNC(移动网络码) 由于当时的Launcher设置为强制横屏了,应该是不会引起重启的. 对于Configuration改变系统会发一个android.intent.action.CONFIGURATION_CHANGED的广播 于是就做了一个广播接收器去检测是不是由于Config

python出现AttributeError: module ‘xxx’ has no attribute ‘xxx’错误时,两个解决办法

运行python程序时,也许会出现这样的错误:AttributeError: module 'xxx' has no attribute 'xxx': 解决该错误有两种方法 1.手动安装该模块 2.检查文件名 这个方式看起来很傻,但是却是新手经常会犯的错,原因是因为自己的文件名称和要使用的模块重名了,只需要更改文件名即可. 原文地址:https://www.cnblogs.com/lijiejoy/p/9266005.html

mybatis高级(2)_数据库中的列和实体类不匹配时的两种解决方法_模糊查询_只能标签

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="cn.cnsdhzzl.dao.StudentDao&q

一个伟大的发现,装X一下。笔记本win7系统64位机器执行unity 时,屏幕模糊解决的方法

笔者笔记本win7系统64位机器执行unity 时.往往切换时unity界面屏幕模糊,后来发现此时须要下载DirectXRuntimes201006x64,安装就可以.

Android !No Launcher activity found!错误

刚开始学android,建了两个工程后,今天新建了个android工程跑程序时显示No Launcher activity found错误,模拟器也不运行. 上网一查,发现问题出在整个项目的那个主配置xml中,一般名字都是叫AndroidManifest.xml 里面没有配置启动项(原因多种多样),在<application></application>中少了这段代码 <activity android:name=".MainActivity" andro

在Linux系统如何让程序开机时自动启动

核心提示:系统的服务在开机时一般都可以自动启动,那在linux系统下如果想要程序在开机时自动启动怎么办?我们知道在 windows系统"开始"-->"所有程序"-->"启动"里面放个快捷方式就行,那Linux系统下呢?...系统的服务在开机时一般都可以自动启动,那在linux系统下如果想要程序在开机时自动启动怎么办?我们知道在 windows系统"开始"-->"所有程序"-->&qu

startActivityForResult 用在于多个Activity之间传值时一些需要注意的用法

requestCode 请求码,即调用startActivityForResult() 传递过去的值 resultCode 结果码,结果码用于标识返回数据来自哪个新Activity 举个例子可能会更明白: 1.在Activity中得到新打开Activity 关闭后返回的数据 package com.google_acmer.activitys; import android.app.Activity; import android.content.Intent; import android.o

Error处理: 重提No Launcher activity found!

Error处理: 重提No Launcher activity found! 重提No Launcher activity found!错误提示,及解决办法 Android应用开发中No Launcher activity found! 是常见的错误,而且解决办法也很简单. 做Android开发已经很久了,相信自己不会轻易犯这个错误,但是今天却又遇到:在AndroidManifest.xml文件中也很确定的已经添加了 <action android:name="android.intent

Android系统移植与调试之-------&gt;如何修改开机动画的两种方式剖析【转】

本文转载自:http://blog.csdn.net/ouyang_peng/article/details/9564753 首先,我们先来分析一下源码: frameworks/base/cmds/bootanimation/BootAnimation.cpp 首先看一下定义的常量: BootAnimation::readyToRun() 进入一个if判断语句 BootAnimation::threadLoop() ==> BootAnimation::Android()会加载"image