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

on创建启动器活动() 在单击启动器图标启动应用程序时被调用

童华池
2023-03-14

我发现Android应用程序非常奇怪的错误,而在Android设备中安装应用程序时具有给定的流程

>

  • 已从Play商店(旧版)安装该应用程序。

    启动应用程序(现在我在主屏幕上,即< code>HomeActivity)。

    现在,我通过安装最新版本(正在生产版本,尚未发布到playstore)升级了应用程序。

    单击启动器图标,等待主屏幕显示,然后按菜单按钮将应用程序置于后台。

    现在,单击启动器图标启动应用程序。

    在这种情况下,启动启动屏幕(活动),然后将我带到主屏幕。在日志中,调用转到HomeActivity的onStop()。这意味着活动不会被破坏。因此,当我单击启动器图标时,它应该恢复HomeActivity,而不是重新创建splashActivity。但当我从后台启动应用程序时,活动将恢复,并且不会显示启动屏幕。这是正确的行为吗?如果是这样的话,那么我不会得到对<code>onDestroy()的回调。

    下面是清单中我的活动代码:

     <activity
                android:name="com.app.ui.HomeActivity"
                android:label="@string/app_name"
                android:launchMode="singleTask"
                android:configChanges="orientation|keyboard|keyboardHidden|screenSize|screenLayout|uiMode"
                android:screenOrientation="portrait"
                android:windowSoftInputMode="adjustNothing">
    
            </activity>
    
            <activity
                android:name="com.app.ui.SplashActivity"
                android:label="@string/app_name"
                android:screenOrientation="sensorPortrait"
                android:theme="@android:style/Theme.Translucent.NoTitleBar">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
    

    我没有将任何启动模式设置为“飞溅活动”。一段时间后,它变得正确,并且不显示初始屏幕。

    此外,当我从后台启动应用程序或按后退按钮然后单击应用程序图标时,此错误不会重现。只有当我单击启动器图标,将应用程序保留在后台并且过了一段时间后,它才会正确。

    另外,当我在没有更新的情况下安装应用程序时,此问题没有发生。只有当我更新apk时,才会发生这种情况

    为什么在最初的发布中会出现这种情况……这是Android系统中的一个bug吗。。?如果是,如何避免这个问题。。

  • 共有1个答案

    葛永丰
    2023-03-14

    应用程序在后台运行一段时间后关闭的原因是因为您设备的内核正在杀死进程,以便在它的位置上运行更多进程。我假设您的应用程序在后台运行时正在访问其他应用程序,这就是它被杀死的原因(因此跳过Android生命周期中的onDestroy()调用!)。

    从Android开发者指南上的文档中可以看到onDestroy()的活动生命周期:

    注意:不要指望此方法被调用为保存数据的地方!例如,如果活动正在内容提供商中编辑数据,则这些编辑应在onPance()或onSaveInstanceState(Bundle)中提交,而不是在这里。此方法通常用于释放与活动关联的线程等资源,以便在其应用程序的其余部分仍在运行时,已销毁的活动不会留下此类东西。在某些情况下,系统会简单地杀死活动的托管进程而不在其中调用此方法(或任何其他方法),因此不应使用它来执行打算在进程消失后保留的事情。

    链接到文档

     类似资料:
    • 问题内容: 我已经搜索过SO,但没有找到类似的问题,因为我不确定如何在句子中进行逐步设置。我正在使用带有徽标的ActionBarSherlock,而不是带有活动顶部左上角文本的启动器图标(即72x72图标)。 当活动首次加载时,只需不到一秒的时间。我看到清单中定义的启动器图标和标签(如下所示),然后带徽标的操作栏出现。这个家庭活动非常简单,因此它不会做任何可能导致延迟的额外加载。 我可以通过将其样

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

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

    • 当我尝试运行spring boot应用程序时,我遇到了以下异常: 组织。springframework。豆。工厂BeanCreationException:创建名为“configurationPropertiesBeans”的bean时出错,该bean在类路径资源[org/springframework/cloud/autoconfigure/ConfigurationPropertiesRebi

    • 问题内容: 我正在尝试构建一个android应用程序,此应用程序的主要功能之一是使其能够在手机启动时自动启动活动,我在手机上看到一些应用程序已经执行了此操作,因此任何帮助都将非常有用。我可以至少通过sdk对此进行更好的研究,谢谢! 问题答案: 您需要像这样实现BroadCastreceiver: 在清单中添加以下内容: 添加权限:

    • 在我的应用程序中,我有一个在后台(和前台)运行。 在这个中,有一个,当它完成时,我想在某个中启动应用程序并在中自动执行一些操作,即使我的应用程序被杀死或关闭,我也希望它能正常工作。 我看到了一些答案,这是其中之一,但它对我不起作用。我找到了一个更好的解决方案,并将其作为答案发布在下面,但仍然只有在应用程序关闭但未完全关闭时才有效。 如何从后台启动,即使应用程序已关闭或关闭?