当前位置: 首页 > 知识库问答 >
问题:

当通过图标启动时,应用程序完全重新启动

万博涛
2023-03-14

我正在尝试发布我的第一个Android应用程序,以发送给一些测试人员。但是,我遇到了一个问题。当您退出应用程序,然后通过其图标启动它重新进入它时,它会重新启动整个应用程序,而不是返回到其以前的位置。即使您在退出后立即重新进入,也会发生这种情况。但是,如果我按住主屏幕按钮并通过最近的应用程序列表启动它,则不会发生这种情况。

我在网上搜索过其他有这个问题的人,只有少数人,但没有人能确切回答为什么会发生在他们身上。在旧问题中,有人建议在清单文件中将启动模式设置为单任务或单实例,但这对我没有帮助,此外,据我所知,android的默认行为是在这种情况下返回到任务的先前状态,因此我不知道为什么我需要特殊的清单选项来实现这一点。

这个问题最奇怪的是,如果我使用eclipse和调试器将应用程序放在我的手机上,就不会出现这个问题。我甚至不需要连接到调试器,似乎只要我有应用程序的调试版本,问题就不会发生。但如果我使用发布版本(我使用Eclipse中的Android Tools-导出签名应用程序包菜单选项创建它),问题就会发生。如果有人对导致这种情况的原因有任何见解,我很想听听你的想法。

共有3个答案

钱志义
2023-03-14
 // To prevent launching another instance of app on clicking app icon 
        if (!isTaskRoot()
                && getIntent().hasCategory(Intent.CATEGORY_LAUNCHER)
                && getIntent().getAction() != null
                && getIntent().getAction().equals(Intent.ACTION_MAIN)) {

            finish();
            return;
        }

在调用setContentView之前,在启动器活动中编写上述代码。这将解决问题

魏翔
2023-03-14

到目前为止,我发现这是一个问题,具体取决于您如何将其安装在真实设备中,特别是:

  1. 如果您简单地将APK复制并粘贴到设备的本地存储并从设备上安装,无论它是签名的还是未签名的,或者是从bin文件夹中获取的,它都会显示此行为,应用html" target="_blank">程序将从菜单图标重新启动

如果使用以下选项之一安装,则不会出现此问题:

> < li>

使用终端或命令提示符转到sdk/tools/

adb install <FILE PATH OF .APK FILE>

在 Linux 中,键入:

./adb install <FILE PATH OF .APK FILE>

只需从 Eclipse 运行您的项目即可。

我很高兴知道是否有任何可能的方法来分发用于测试版测试的正确APK。我已经尝试导出已签名的APK,因为当您复制并粘贴APK并手动安装时,它会显示流氓行为。

更新:

我找到了一个解决方案。请遵循以下两个步骤:

>

  • 设置Android:启动模式=“单任务”=适用于Android狂欢节中应用的所有活动.xml活动标签内。
  • 将此代码放在启动器活动的 onCreate() 中

    if (!isTaskRoot())
    {
        final Intent intent = getIntent();
        final String intentAction = intent.getAction(); 
        if (intent.hasCategory(Intent.CATEGORY_LAUNCHER) && intentAction != null && intentAction.equals(Intent.ACTION_MAIN)) {
            finish();
            return;       
        }
    }
    

    这种行为是Android中的一个bug。不是特例。

  • 闻人升
    2023-03-14

    我在应用程序上遇到了同样的问题,我解决了这个行为,在

     类似资料:
    • 问题内容: 我愿意在应用程序中添加一个按钮,单击该按钮将重新启动该应用程序。我搜索谷歌,但没有发现任何有用的,除了这一个。但是,此处遵循的过程违反了Java的WORA概念。 是否有其他以Java为中心的方法来实现此功能?是否可以只派生另一个副本然后退出? 提前致谢。我感谢您的帮助。 @deporter我已经尝试过您的解决方案,但是它不起作用:( @mKorbel我写的,采取的概念下面的代码,你曾在

    • 问题内容: 我有一个Java应用程序。 该应用程序具有一个设置,该设置决定该应用程序是否在启动时启动。 目前,我可以通过在“启动项目”文件夹中放置/删除快捷方式来实现此目的。 但是,我想知道是否有更好的方法来处理此行为。 编辑 是的,它是Windows。抱歉,之前没有清除该内容。 该应用程序具有一个用户可以在其中触发动作的UI,并且该应用程序在运行时会定期在后台运行一些任务。 @Peter,如何在

    • 我想通过扫描包含Android应用程序记录的NFC标签来启动我的应用程序。但是,这个应用不应该有启动器图标,所以我不能使用。 我的问题是,如果我注释了清单中的行,应用程序将不再启动(而是在Google Play上执行搜索): 我也尝试添加以下意图过滤器,但没有运气: 我应该怎么做才能让它工作?我应该在中添加代码来处理意图吗?

    • 在google play控制台上发布应用程序时,应用程序图标的大小是多少?

    • 我有一份Java申请。 应用程序有一个决定应用程序是否在启动时启动的设置。 目前,我通过在StartUp items文件夹中放置/删除快捷方式实现了这一点。 然而,我想知道是否有更好的方法来处理这种行为。 编辑 是的,是视窗。抱歉之前没有清除。 应用程序有一个UI,用户可以在其中触发操作,并且应用程序在运行时定期在后台运行一些任务。 @Peter,如何使用应用程序中的代码更改注册表?这种方法是否与

    • 我有一个spring启动应用程序,我需要通过进入文件夹目录并通过命令行启动我的web应用程序来启动它。我有一门课叫应用。java及其内部代码如下所示。 我设置了类路径,然后试图运行命令"",但我得到了这个错误消息""