如何防止自定义主屏幕启动器应用程序重新启动活动?

5
我正在开发自己的主屏幕替代应用程序,它工作得很好,但有一件事让我困扰。当我按下主屏幕键时,当前的主屏幕活动(在清单中定义为main/default/launcher/home)会重新启动 - 当前活动实例的onPause方法被执行,然后onCreate方法再次触发,因此新的活动被带了出来。
另一方面,ADW launcher和LauncherPro不会像我的情况那样表现 - 我没有像刷新一样的体验。 LauncherPro甚至可以执行多个操作:
1. 如果你在带应用程序图标的主屏幕上,它会缩小到查看所有屏幕的快照, 2. 如果你打开抽屉并按Home键,它只会返回到主屏幕。
您有什么想法吗?
我只是从头开始做了一个非常简单的原型,只有一个活动(在清单中定义为main/default/launcher/home),我看到了同样的问题 - 如果我按Home,它就会重新创建。
2个回答

6

在活动的实例中,“isTaskRoot”都为真。当我使用上面的代码片段时,屏幕是空白的。旧的活动实例也没有被销毁。 - Varsha Ravikumar

5
在清单文件的元素中添加android:launchMode="singleInstance"。

android:launchMode="singleTop" 也应该可以正常工作。据我所知,如果使用 singleInstance,则不可能从这个活动调用其他活动。 - mishkin
2
@mishkin: 我正在使用SDK中的Home示例应用程序,它使用singleInstance。有趣的是,AOSP启动器使用singleTask - CommonsWare
为了提供有关“额外”问题的相关@CommonsWare答案,请参阅以下内容:Android launcher press home in launcher to go to default screen - Richard Le Mesurier

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接