【问题标题】:How to prevent custom home launcher app restart activity?如何防止自定义主页启动器应用重启活动?
【发布时间】:2010-12-28 19:46:11
【问题描述】:

我正在自己更换家用发射器,它工作正常,但有一件事困扰着我。当我按下 home 键时,当前的 home Activity(在 manifest 中定义为 main/defualt/launcher/home)重新启动 - 当前的 Activity 实例 onpause 被执行并且 oncreate 被再次触发,因此新的 Activity 被启动。

另一方面,ADW 启动器和 LauncherPRo 的行为并非如此——我的情况并非如此。 Launcher Pro 甚至可以执行多种操作:

  1. 如果您在带有应用图标的主屏幕上,它会缩小以查看所有屏幕的快照,
  2. 如果您打开抽屉并按 Home,它会返回主屏幕。

有什么想法吗?

我刚刚从头开始做了一个非常简单的原型,只有一个活动(在清单中定义为 main/defualt/launcher/home),我看到了同样的事情 - 如果我按 Home,它会重新创建。

【问题讨论】:

    标签: android android-launcher android-homebutton


    【解决方案1】:

    添加

    if (!isTaskRoot()) {
        finish();
        return;
    }
    

    到您的第一个 Activity 的 onCreate()(请参阅 Android application restarts when opened by clicking the application icon)。

    【讨论】:

    • isTaskRoot 在两个活动的实例中都是 true。当我使用上面的 sn-p 时,屏幕是空白的。旧的活动实例也不会被销毁。
    【解决方案2】:

    android:launchMode="singleInstance" 添加到清单中的<activity> 元素。

    【讨论】:

    • android:launchMode="singleTop" 也应该可以正常工作。如果按照我的理解使用 singleInstance,则无法从他的活动中调用其他活动。
    • @mishkin:我将使用 SDK 中的 Home 示例应用程序,它使用 singleInstance。奇怪的是,AOSP 启动器使用singleTask
    • 添加相关的@CommonsWare 答案以获取有关提出的“额外”问题的信息:Android launcher press home in launcher to go to default screen
    猜你喜欢
    • 2013-02-17
    • 2018-03-11
    • 2013-04-21
    • 2023-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多