国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

安卓開發中,release安裝包安裝后,打開app后再按home鍵,再次點擊程序圖標app再次重新啟動的解決辦法

2019-11-06 09:53:29
字體:
來源:轉載
供稿:網友

安卓開發中,release安裝包安裝后,打開app后再按home鍵,再次點擊程序圖標app再次重新啟動的解決辦法

在開發中我們一般都是直接AS上的安裝(Run)按鈕,直接安裝到真機或模擬器上進行測試,但是當發布時就要先打包,再拷貝安裝。如題目中的描述,這個問題在平時Debug的時候并不存在,只有發布正式版的時候才會出現,(尼瑪,隱藏的挺深?。】煽恿宋伊耍。?/p>

開始發現這個問題,我以為是app被系統kill了,但是經過我多次調試與分析,發現當打開app后,再按home鍵回到桌面時,這時不點擊app圖標,而是啟動任務列表,從任務列表中恢復app,就不會出現這個問題,所以排除了被系統kill的因素。

經過與同事討論,與上網搜索,終于找到了問題的原因和解決辦法。

原因分析:這篇文字分析的比較詳細:http://www.cnblogs.com/net168/p/5722752.html

主要原因是:每次啟動Intent導致新創建Task的時候,該Task會記錄導致其創建的Intent;而如果后續需要有一個新的與創建Intent完全一致(完全一致定位為:啟動類,action、category等等全部一樣,不可多項也不可缺少),那么該Intent并不會觸發Activity的新建啟動,而只會將已經存在的對應Task移到前臺;這也就是為什么桌面會在再次點擊圖標時將后臺任務挪到前臺而不是重新啟動App的實現。

解決辦法:

在啟動頁的Activity中的 onCreate()方法做處理

PRotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 避免從桌面啟動程序后,會重新實例化入口類的activity if (!this.isTaskRoot()) { // 判斷當前activity是不是所在任務棧的根 Intent intent = getIntent(); if (intent != null) { String action = intent.getAction(); if (intent.hasCategory(Intent.CATEGORY_LAUNCHER) && Intent.ACTION_MAIN.equals(action)) { finish(); return; } } }}

如果啟動頁為SplashActivity,之后finish掉啟動MainActivity,解決辦法:將MainActivity的launchMode設置為“singleTask”

<activity android:name=".activity.StartActivity" android:screenOrientation="portrait"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter></activity><activity android:name=".activity.MainActivity" android:launchMode="singleTask" android:screenOrientation="portrait" />
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 甘肃省| 龙海市| 景宁| 中阳县| 广汉市| 遂川县| 靖江市| 澄城县| 衡水市| 分宜县| 保定市| 新营市| 巴楚县| 汉源县| 贵溪市| 阜康市| 东兴市| 乐陵市| 沙湾县| 白山市| 攀枝花市| 清丰县| 玉门市| 营口市| 鄢陵县| 胶南市| 惠州市| 柳州市| 泰兴市| 和平区| 英德市| 芜湖市| 阿瓦提县| 定州市| 红安县| 广宗县| 辽阳市| 武安市| 皮山县| 类乌齐县| 广宗县|