Android安装两次才成功,Android应用从市场安装完成打开与桌面打开,被启动两次的问题...

问题描述:

1、从Android应用市场下载并安装应用,安装完成后,当前界面下方会出现“打开”按钮,这时候我们点击“打开”,会启动应用,进入到应用的启动页面,然后进入应用的主界面,这个时候我们什么也不做,按Home键返回到桌面,找到应用图标所在区域,点击应用图标,此时我们所期待的现象是重新回到之前我们打开的页面,对吗?然后这个时候你点击桌面上的应用图标打开应用,这个时候你会惊奇的发现应用重新启动了。按返回键你退出应用一次,然后又回到了之前启动的应用页面了。

2、另外,在部分第三方桌面启动app的时候也会有这种情况出现,我测试的时候使用的“米粒桌面“,在全部应用页打开应用,按Home键切到米粒桌面,在米粒桌面的最近使用中打开,会跟上面的结果一样,应用被重启了!

问题重现:

通过上面现象描述,大家应该看懂了问题,可以通过一个具体的实现来重现一下这个问题,首先我安装米粒桌面(非广告,只是我用习惯了,第三方应用市场也是可以),然后安装“哄你”app(也可以尝试其他的app),安装完成后,在米粒桌面的全部应用页面中启动 “哄你”APP,然后按home键切换到米粒桌面的首页,找到最近使用的app列表,打开“哄你”APP,这个时候发现应用会重启,并且退出的时候退出两次才会回到桌面,那么我们来分析一下这是为什么呢?当然,哄你这款软件并不会,因为我做过处理了,所以如果你们想试验的,可以随便挑一款其他APP来测试。

下面是我的调试打印信息:

1、首先从全部应用页面启动哄你APP:

3fb9e8021a02

可以看到启动页的Intent信息:

Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.kk.sleep/.splash.ui.EntryActivity bnds=[275,1336][545,1606] }

2、按Home键回到桌面,从最近应用中打开哄你APP:

3fb9e8021a02

可以看到启动页的OnCrate()再次被调用了! Intent的信息:

Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10600000 pkg=com.kk.sleep cmp=com.kk.sleep/.splash.ui.EntryActivity }

从上面的调试Log中可以看到两次启动的Intent中的Flag不一致!

解决方案:

在启动的Activity的OnCreate方法中加入:

if(!this.isTaskRoot()) {

Log.d(TAG+"_entry","avoid the enrtyActivity re-created");

Intent intent = getIntent();

if(intent !=null) {

String action = intent.getAction();

if(intent.hasCategory(Intent.CATEGORY_LAUNCHER) && Intent.ACTION_MAIN.equals(action)) {

finish();

return;

}

}

}else{

setContentView(R.layout.activity_entry);

init();

}

if(!isTaskRoot()),判断该Activity是不是任务空间的源Activity,如果返回Flase,就是说是被系统重新实例化出来,如果这个Activity是你的Lanucher Activity,这里可以直接Finish关闭页面了。

需要的注意是:

1、如果上面的Activity中实现了finish() 和 onDestroy() 方法,一定要保证这两个方法中不会有对空对象的操作以及注销未注册的广播等类似操作,因为第二次打开应用时,Oncreate()中还没初始化的时候,就会调用finish()方法,及直接触发onDestroy()方法,而这两个函数里面的对象变量都还未进行初始化等操作。

2、finish() 和 onDestroy() 方法中不能有System.exit(0);否则第二次打开应用杀掉进程时也会将第一次打开的应用杀掉。

解决问题的办法很简单,一行代码就搞定,但如果不细心,就难以发现这类烦人的问题。如果大家有什么疑问可以留言,欢迎大家一起交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/539360.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

事务保存点

在SQL Server中使用rollback会回滚所有的未提交事务状态,但是有些时候我们只需要回滚部分语句,把不需要回滚的语句提到事务外面来,虽然是个方法,但是却破坏了事务的ACID。 SQL中使用事务保存点 即可解决这个问题. 一.SQL 事务中存…

鼎信诺审计前端取数工具_给2019前端的5个建议

2019 农历新年即将到来,是时候总结一下团队过去一年的技术沉淀。过去一年我们支撑的数据相关业务突飞猛进,其中两个核心平台级产品代码量分别达到30万行和80万行,TS 模块数均超过1000个,协同开发人员增加到20人。由于历史原因&…

Hadoop HA

HA概念: high avalability 高可用性。 hadoop 1.x非ha设计 Secondnode对元数据的可靠性有了保障,但服务的可用性不高。 即:当Namenode节点宕机了,整个hadoop就不能使用了,影响了client的使用。 hadoop 2.x的ha设计 新…

紫光展锐处理器有那些手机用_酷派将发千元5G手机,国产紫光展锐加持,主打性价比...

↑↑↑点击上方蓝字订阅每日最新热点手机资讯数年之前,“中华酷联”是国产智能手机的四大代表。不过随着越来越多的强力竞争者入局,中兴、酷派、联想渐渐衰败,仅剩华为屹立手机行业顶端。但是酷派似乎从未想过放弃,最近便要发布一…

jelly bean android,Jelly Bean占Android系统份额突破10%

Android系统份额图(腾讯科技配图)腾讯科技讯(清雨)北京时间1月4日消息,据国外媒体报道,微博)周四发布最新数据显示,Android 4.1版本和Android 4.2版本的Jelly Bean在Android系统中的份额超过了10%,另外Android 4.0版本的ICS的份额…

Unable to load native-hadoop library for your platform

警告: 16/08/04 19:21:36 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 原因: 没有配置好环境变量,hadoop的native没有配置进去 解决方法&#x…

android网络切换socket,Android版的websocket切换网络无法重连

- 当前 Bug 的表现(可附上截图)1、android微信使用websocket切换网络时一般都无法重连,有时候重启微信也没用,需要重启手机才能连上。移动或联通网络切换到电信网络特别容易出现。2、Android微信使用socketIO经常会断线重连,有时候断线几次就…

妲己机器人需要什么条件才能使用_estar零封YTG:平头哥快乐电竞,只有妲己没亚瑟,差评...

2020KPL秋季赛常规赛第8周最后1个比赛日的第2场比赛,结果已经尘埃落定了。而最终的比赛结果是:estarpro轻松以3比0的大比分零封战胜YTG。有一说一,这一场比赛真的是毫无悬念啊,甚至双方交手的第1小局比赛,estarpro只用…

蓝桥杯 出现次数最多的整数

问题描述   编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数N也是由用户输入的,最多不会超过20。然后程序将对这个数组进行统计,把出现次数最多的那个数组元素值打印出来。如果有两个元素…

python离线录音转文字_Python将文字转成语音并读出来的实例详解

前言 本篇文章主要介绍,如何利用Python来实现将文字转成语音。将文字转成语音主要有两种不同的实现方法:先将文字转成语音,然后再通过读取语音实现发音、直接调用系统内置的语音引擎实现发音,后一种方法的实现主要利用第三方库。 …

Linux 文件夹权限

文件夹默认权限:drwxr-xr-x 755 文件默认权限:-rw-r--r-- 644 ------------------------------------------ drwxr-xr-x 第一位(左数)表示当前目录是目录还是文件,d表示目录,-表示普通文件. 后面9位分为3组,每3组作为1组, 从左到右分别表示&…

魅族15系统是android,魅族15系列评测:性能够用王者荣耀优化

硬件性能:中配够用,高配优秀硬件方面,文章前面的参数表已经写得很清楚,魅族15搭载的是高通骁龙660处理器,并配备4GB的运行内存;魅族15 Plus则搭载三星Exynos 8895,配备6GB运行内存。在目前的移动…

.net 怎么循环得到数组里的值_HashMap 底层实现、加载因子、容量值及死循环

写在前面:2020年面试必备的Java后端进阶面试题总结了一份复习指南在Github上,内容详细,图文并茂,有需要学习的朋友可以Star一下!GitHub地址:abel-max/Java-Study-NoteHashMap 简介HashMap 是一个基于哈希表…

Linux下 -bash: php: command not found 命令找不到

转载自CSDN博客,原作者:warthur。原文链接:http://blog.csdn.net/warthur/article/details/47342163这个问题其实很简单,如果你在终端输入一个命令,而系统提示你说命令没有找到(Command not found&#xff…

hdfs命令

bin/hdfs dfs命令 appendToFile Usage: hdfs dfs -appendToFile <localsrc> ... <dst> 追加一个或者多个文件&#xff08;linux文件&#xff09; <localsrc> ...到hdfs制定文件<dst>中.也可以从命令行读取输入. hdfs dfs -appendToFile localfile /use…

eclipse jdk配置_eclipse的安装和jdk的配置(JAVA)

首先需要到eclipse官网下载(eclipse.org)点击download进入新界面点击download 64bit进入新界面 点击划线的&#xff0c;点击download也许但是比较慢&#xff0c;点击划线的会出现扩展选项&#xff0c;选择距离你比较近的节点(速度比较快)作者选的是C…

webview跟html通信的原理,1.iOS: webView与html的交互

摘要:由于最近的项目中大部分功能需要 iOS 原生端与 html 进行交互才能完美实现,所以对 iOS 与 html 的交互方式进行了学习,这篇文章主要介绍 WebViewJavascriptBridge 框架的使用.至于原生的 JavaScriptCore.framework 就不多介绍了,同时在这里推荐一个比较好的博客.http://bl…

HDFS Federation(HDFS 联盟)介绍

1. 当前HDFS架构和功能概述 我们先回顾一下HDFS功能。HDFS实际上具有两个功能&#xff1a;命名空间管理&#xff08;Namespace management&#xff09;和块/存储管理服务&#xff08;block/storage management&#xff09;。 1.1 命名空间管理 HDFS的命名空间包含目录、文件和块…

linux java 部署 生产环境

2019独角兽企业重金招聘Python工程师标准>>> 下载文件 首先进入网页&#xff1a; http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 点击Accept License Agreement后选择jdk-8u161-linux-x64.tar.gz&#xff0c;下载。 配置环…

c#位数不够0补充完_C# 位数不足补零

C#位数不足补零&#xff1a;int i10;方法1&#xff1a;Console.WriteLine(i.ToString("D5"));方法2&#xff1a;Console.WriteLine(i.ToString().PadLeft(5,0));//推荐方法3&#xff1a;Console.WriteLine(i.ToString("00000"));在 C# 中可以对字符串使用 …