有时开发应用后,会为某个Activity创建一个桌面快捷方式,以后希望通过快捷方式直接进入到该Activity里,加Activity A。譬如百度卫士的桌面加速球就是这样。
但是会碰到如下问题,当你的应用没有完全退出,譬如在一个其他的Activity B里,按下home键后,在通过桌面Activity A的快捷方式点击后,系统并不会进入到Activity A里,而是会先打开你未关闭的Activity B。 这是由于android系统的task决定的,如果不特别指明某个Activity的task,则整个application是在同一个以包名命名的task里。当这个task里有一个Activity在后台时,你想重新进入到该task里的某个Activity,系统会优化打开后台的Activity,既Activity B
如果你想每次无论什么情况,点击Activity A的快捷方式就进入Activity A。那你需要在Manifest里为 Activity A指明一个不同的task,android:taskAffinity = "com.wiwigo.launcher"
命名随意,只要不与系统包名一样即可。 这样无论你在什么情况下,都能成功打开Activity A。
该方法适用于,一个应用内有多个不同功能的快捷方式,需要分别进入到不同Activity。又不影响应用内其他Activity。
感觉有点类似于多线程的机制。默认一个应用在一个task。
大家可以去查看一些关于task 和Activity栈顶的资料,就会明白了。