解析android建立捷徑會啟動兩個應用的問題

來源:互聯網
上載者:User

接下來講一種完美的方案。
因為第一個介面是歡迎介面,所以捷徑啟動的介面也是歡迎介面,剛開始就懷疑捷徑建立的代碼有問題,但不知道問題出在哪兒。猜測可能會是捷徑的錯誤導致系統建立兩個應用,就也是同一個應用會有兩個PID,結果在控制台查看列印的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

最後發現兩個PID是一致的(InitActivity是歡迎介面的Activity),可能是意外,把這兩個LOG作比較會發現從列表中點擊表徵圖啟動應用時是上面的LOG,通過捷徑啟動的是下面的LOG,通過比較會發現,以捷徑啟動應用時會比另外一種方式少了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);

再跑應用一切OK,不會啟動兩個應用,退出也只需要一次,太給力了!至於為什麼就留給看客你了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.