解析android創(chuàng)建快捷方式會(huì)啟動(dòng)兩個(gè)應(yīng)用的問(wèn)題
接下來(lái)講一種完美的方案。
因?yàn)榈谝粋€(gè)界面是歡迎界面,所以快捷方式啟動(dòng)的界面也是歡迎界面,剛開(kāi)始就懷疑快捷方式創(chuàng)建的代碼有問(wèn)題,但不知道問(wèn)題出在哪兒。猜測(cè)可能會(huì)是快捷方式的錯(cuò)誤導(dǎo)致系統(tǒng)創(chuàng)建兩個(gè)應(yīng)用,就也是同一個(gè)應(yīng)用會(huì)有兩個(gè)PID,結(jié)果在控制臺(tái)查看打印的LOG,不同方式啟動(dòng)的LOG如下:
09-22 09:39:11.929: INFO/ActivityManager(61): Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.android.xxx/.activity.InitActivity } from pid 19304
09-22 09:39:12.876: INFO/ActivityManager(61): Displayed com.android.xxx/.activity.InitActivity: +763ms
09-22 09:39:47.668: INFO/ActivityManager(61): Starting: Intent { act=android.intent.action.MAIN flg=0x10000000 cmp=com.android.xxx/.activity.InitActivity bnds=[5,392][115,510] } from pid 19304
09-22 09:39:48.737: INFO/ActivityManager(61): Displayed com.android.xxx/.activity.InitActivity: +995ms
最后發(fā)現(xiàn)兩個(gè)PID是一致的(InitActivity是歡迎界面的Activity),可能是意外,把這兩個(gè)LOG作比較會(huì)發(fā)現(xiàn)從列表中點(diǎn)擊圖標(biāo)啟動(dòng)應(yīng)用時(shí)是上面的LOG,通過(guò)快捷方式啟動(dòng)的是下面的LOG,通過(guò)比較會(huì)發(fā)現(xiàn),以快捷方式啟動(dòng)應(yīng)用時(shí)會(huì)比另外一種方式少了cat=[android.intent.category.LAUNCHER] ,于是乎在代碼中加上(請(qǐng)參照上一篇的代碼,只添加了第三行):
ComponentName comp = new ComponentName(this.getPackageName(), this.getPackageName() + "." +this.getLocalClassName());
Intent intent = new Intent(Intent.ACTION_MAIN).setComponent(comp);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, intent);
再跑應(yīng)用一切OK,不會(huì)啟動(dòng)兩個(gè)應(yīng)用,退出也只需要一次,太給力了!至于為什么就留給看客你了。
- 分析Android中應(yīng)用的啟動(dòng)流程
- Android 啟動(dòng)activity的4種方式及打開(kāi)其他應(yīng)用的activity的坑
- Android應(yīng)用啟動(dòng)另外一個(gè)apk應(yīng)用的方法
- Android優(yōu)化應(yīng)用啟動(dòng)速度
- Android使用Intent啟動(dòng)其他非系統(tǒng)應(yīng)用程序的方法
- android應(yīng)用實(shí)現(xiàn)開(kāi)機(jī)自動(dòng)啟動(dòng)方法
- 解析Android應(yīng)用啟動(dòng)后自動(dòng)創(chuàng)建桌面快捷方式的實(shí)現(xiàn)方法
- Android筆記之:App應(yīng)用之啟動(dòng)界面SplashActivity的使用
- Android Intent啟動(dòng)別的應(yīng)用實(shí)現(xiàn)方法
- Android應(yīng)用框架之應(yīng)用啟動(dòng)過(guò)程詳解
相關(guān)文章
Android中AlarmManager+Notification實(shí)現(xiàn)定時(shí)通知提醒功能
本篇文章主要介紹了Android中AlarmManager+Notification實(shí)現(xiàn)定時(shí)通知提醒功能,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-10-10
Android使用AutoCompleteTextView實(shí)現(xiàn)自動(dòng)填充功能的案例
今天小編就為大家分享一篇關(guān)于Android使用AutoCompleteTextView實(shí)現(xiàn)自動(dòng)填充功能的案例,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-03-03
Android多功能時(shí)鐘開(kāi)發(fā)案例(實(shí)戰(zhàn)篇)
這篇文章主要為大家詳細(xì)介紹了Android多功能時(shí)鐘開(kāi)發(fā)案例,開(kāi)發(fā)了時(shí)鐘、鬧鐘、計(jì)時(shí)器和秒表,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-05-05
Android中使用socket使底層和framework通信的實(shí)現(xiàn)方法
native和framework的通信是通過(guò)jni,但是這一般只是framework調(diào)用native,native如果有消息要怎樣通知上層 呢?android中GSP模塊提供一種解決思路,但是實(shí)現(xiàn)有些復(fù)雜,這里介紹一種使用socket通信的方法可以使native和framework自由通信,感興趣的朋友一起看看吧2016-11-11
Android編程實(shí)現(xiàn)兩個(gè)Activity相互切換而不使用onCreate()的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)兩個(gè)Activity相互切換而不使用onCreate()的方法,結(jié)合實(shí)例形式分析了多個(gè)Activity切換而不重新創(chuàng)建的操作技巧,需要的朋友可以參考下2017-01-01
Android使用音頻信息繪制動(dòng)態(tài)波紋
這篇文章主要介紹了Android使用音頻信息繪制動(dòng)態(tài)波紋 的相關(guān)資料,需要的朋友可以參考下2016-02-02
Android編程之在SD卡上進(jìn)行文件讀寫(xiě)操作實(shí)例詳解
這篇文章主要介紹了Android編程之在SD卡上進(jìn)行文件讀寫(xiě)操作的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Android的文件操作及針對(duì)SD卡的存取操作相關(guān)技巧,需要的朋友可以參考下2015-12-12
Android 調(diào)用系統(tǒng)相機(jī)拍攝獲取照片的兩種方法實(shí)現(xiàn)實(shí)例
這篇文章主要介紹了Android 調(diào)用系統(tǒng)相機(jī)拍攝獲取照片的兩種方法實(shí)現(xiàn)實(shí)例的相關(guān)資料,一種是通過(guò)Bundle來(lái)獲取壓縮過(guò)的照片,一種是通過(guò)SD卡獲取的原圖,需要的朋友可以參考下2016-11-11
android中實(shí)現(xiàn)手機(jī)號(hào)碼的校驗(yàn)的示例代碼
本篇文章主要介紹了android中實(shí)現(xiàn)手機(jī)號(hào)碼的校驗(yàn)的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09

