解析android創(chuàng)建快捷方式會啟動兩個應(yīng)用的問題
接下來講一種完美的方案。
因為第一個界面是歡迎界面,所以快捷方式啟動的界面也是歡迎界面,剛開始就懷疑快捷方式創(chuàng)建的代碼有問題,但不知道問題出在哪兒。猜測可能會是快捷方式的錯誤導(dǎo)致系統(tǒng)創(chuàng)建兩個應(yīng)用,就也是同一個應(yīng)用會有兩個PID,結(jié)果在控制臺查看打印的LOG,不同方式啟動的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)兩個PID是一致的(InitActivity是歡迎界面的Activity),可能是意外,把這兩個LOG作比較會發(fā)現(xiàn)從列表中點擊圖標(biāo)啟動應(yīng)用時是上面的LOG,通過快捷方式啟動的是下面的LOG,通過比較會發(fā)現(xiàn),以快捷方式啟動應(yīng)用時會比另外一種方式少了cat=[android.intent.category.LAUNCHER] ,于是乎在代碼中加上(請參照上一篇的代碼,只添加了第三行):
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,不會啟動兩個應(yīng)用,退出也只需要一次,太給力了!至于為什么就留給看客你了。
- 分析Android中應(yīng)用的啟動流程
- Android 啟動activity的4種方式及打開其他應(yīng)用的activity的坑
- Android應(yīng)用啟動另外一個apk應(yīng)用的方法
- Android優(yōu)化應(yīng)用啟動速度
- Android使用Intent啟動其他非系統(tǒng)應(yīng)用程序的方法
- android應(yīng)用實現(xiàn)開機(jī)自動啟動方法
- 解析Android應(yīng)用啟動后自動創(chuàng)建桌面快捷方式的實現(xiàn)方法
- Android筆記之:App應(yīng)用之啟動界面SplashActivity的使用
- Android Intent啟動別的應(yīng)用實現(xiàn)方法
- Android應(yīng)用框架之應(yīng)用啟動過程詳解
相關(guān)文章
Android中AlarmManager+Notification實現(xiàn)定時通知提醒功能
本篇文章主要介紹了Android中AlarmManager+Notification實現(xiàn)定時通知提醒功能,非常具有實用價值,需要的朋友可以參考下2017-10-10Android使用AutoCompleteTextView實現(xiàn)自動填充功能的案例
今天小編就為大家分享一篇關(guān)于Android使用AutoCompleteTextView實現(xiàn)自動填充功能的案例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-03-03Android多功能時鐘開發(fā)案例(實戰(zhàn)篇)
這篇文章主要為大家詳細(xì)介紹了Android多功能時鐘開發(fā)案例,開發(fā)了時鐘、鬧鐘、計時器和秒表,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-05-05Android中使用socket使底層和framework通信的實現(xiàn)方法
native和framework的通信是通過jni,但是這一般只是framework調(diào)用native,native如果有消息要怎樣通知上層 呢?android中GSP模塊提供一種解決思路,但是實現(xiàn)有些復(fù)雜,這里介紹一種使用socket通信的方法可以使native和framework自由通信,感興趣的朋友一起看看吧2016-11-11Android編程實現(xiàn)兩個Activity相互切換而不使用onCreate()的方法
這篇文章主要介紹了Android編程實現(xiàn)兩個Activity相互切換而不使用onCreate()的方法,結(jié)合實例形式分析了多個Activity切換而不重新創(chuàng)建的操作技巧,需要的朋友可以參考下2017-01-01Android編程之在SD卡上進(jìn)行文件讀寫操作實例詳解
這篇文章主要介紹了Android編程之在SD卡上進(jìn)行文件讀寫操作的方法,結(jié)合實例形式較為詳細(xì)的分析了Android的文件操作及針對SD卡的存取操作相關(guān)技巧,需要的朋友可以參考下2015-12-12Android 調(diào)用系統(tǒng)相機(jī)拍攝獲取照片的兩種方法實現(xiàn)實例
這篇文章主要介紹了Android 調(diào)用系統(tǒng)相機(jī)拍攝獲取照片的兩種方法實現(xiàn)實例的相關(guān)資料,一種是通過Bundle來獲取壓縮過的照片,一種是通過SD卡獲取的原圖,需要的朋友可以參考下2016-11-11android中實現(xiàn)手機(jī)號碼的校驗的示例代碼
本篇文章主要介紹了android中實現(xiàn)手機(jī)號碼的校驗的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-09-09