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.pswp.cn/news/539360.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/539360.shtml
英文地址,請注明出處:http://en.pswp.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# 中可以對字符串使用 …