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的份额…

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

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

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

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

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

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

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

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

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;下载。 配置环…

华为鸿蒙发布作文,华为鸿蒙OS定档6月2日发布!MatePad Pro 2或同台亮相:首发预装...

5月25日一早&#xff0c;原华为EMUI官微就正式宣布更名为Harmony OS&#xff0c;并宣布将在6月2日晚20点召开鸿蒙操作系统及华为全场景新品发布会&#xff0c;届时将正式发布鸿蒙OS正式版。据近期进行开发者测试的用户反馈&#xff0c;鸿蒙OS目前已经非常完善&#xff0c;且稳定…

python如何根据数据画散点图_如何用python画出样本的散点图?

用python画样本散点图的方法&#xff1a; 数据&#xff08;取第一列作为x&#xff0c;取第四列作为y&#xff09;如下&#xff1a;实现代码如下&#xff1a;import matplotlib.pyplot as plt import numpy as np # 定义画散点图的函数 def draw_scatter(n, s): ""&qu…

Hadoop RPC框架

原文&#xff1a;http://blog.csdn.net/thomas0yang/article/details/41211259 ---------------------------------------------------------------------------------------------- 1、RPC框架概述1.1 RPC&#xff08;Remote Procedure Call Protocol&#xff09;——远程过程…

centos7 校正linux系统时间_Linux系统:Centos7下搭建ClickHouse列式存储数据库

一、ClickHouse简介1、基础简介Yandex开源的数据分析的数据库&#xff0c;名字叫做ClickHouse&#xff0c;适合流式或批次入库的时序数据。ClickHouse不应该被用作通用数据库&#xff0c;而是作为超高性能的海量数据快速查询的分布式实时处理平台&#xff0c;在数据汇总查询方面…

html调用js页面显示不出来了,JS代码文件调用显示乱码,直接写在html页面的里可以调用,但是单独放在js文件里不能调用...

最近遇到了一个很奇怪的问题&#xff0c;就是在HTML网页代码里直接写JS代码可以正常运行的代码&#xff0c;使用JS文件调用就不行。var cities [ {"name" : "北京"}, {"name" : "上海"}, {"name" : "广州"} ];$(…

水系图一般在哪里找得到_城市供水系统防护体系的探索与思考

城市是一个国家或地区的政治、经济和文化中心&#xff0c; 在战争中常常被选为重点打击目标。1988年&#xff0c;时任美国空军司令部副参谋长助理的约翰A. 沃登上校提出“五环”目标打击理论&#xff0c;将 对敌打击目标分为五个层&#xff0c;其中就将基础设施列为第三层打击目…