从第 3 方应用程序启动时重新显示启动画面
Splash screen re-showing when launched from 3rd party app
我已经为我的应用实现了启动画面。我将初始屏幕 activity 设为启动 activity。 splash activity 执行启动工作(加载数据等),然后启动 "real" main activity.
问题是这样的:我正在使用能够启动其他应用程序的第 3 方应用程序。假设我的应用程序已经 运行(它已经过了初始屏幕,进入了真正的主屏幕)。然后我按下主页按钮将应用程序置于后台。然后我会做一些事情让第 3 方应用程序启动我的应用程序。我想要的是简单地恢复我的应用程序(就像我从 phone 的常规启动器中点击应用程序图标一样)。相反,它会重新启动初始屏幕,我的初始化代码会再次运行,这是我不想要的。
由于这是启动我的应用程序的第 3 方应用程序,我无法更改它启动我的应用程序的方式。我假设它只是查询包管理器以获取启动意图并启动它。所以,我需要找到一种方法在我的应用程序中解决这个问题。
如果我的 "real" main activity 已经是 运行,有什么方法可以从启动画面的 onCreate 方法中找出,如果是这样,跳过初始化代码并将现有的主要 activity 置于前台?
在您的应用程序中保留一个静态布尔值 class。
初始化完成后,将其设置为true。
当启动画面开始时,检查布尔值,如果为真,则直接进入您的主程序 activity 而不做任何逻辑,并立即完成启动 activity.
如果为 false,则假设它是冷启动,您需要 运行 初始化代码。
无法从 Android 应用程序中查看 Activity 堆栈,因此您无法检查 Main activity 是否已经 运行宁.
第 3 方应用程序也无法检查您的应用程序是否 运行ning,然后根据此启动不同的 activity。
我已经为我的应用实现了启动画面。我将初始屏幕 activity 设为启动 activity。 splash activity 执行启动工作(加载数据等),然后启动 "real" main activity.
问题是这样的:我正在使用能够启动其他应用程序的第 3 方应用程序。假设我的应用程序已经 运行(它已经过了初始屏幕,进入了真正的主屏幕)。然后我按下主页按钮将应用程序置于后台。然后我会做一些事情让第 3 方应用程序启动我的应用程序。我想要的是简单地恢复我的应用程序(就像我从 phone 的常规启动器中点击应用程序图标一样)。相反,它会重新启动初始屏幕,我的初始化代码会再次运行,这是我不想要的。
由于这是启动我的应用程序的第 3 方应用程序,我无法更改它启动我的应用程序的方式。我假设它只是查询包管理器以获取启动意图并启动它。所以,我需要找到一种方法在我的应用程序中解决这个问题。
如果我的 "real" main activity 已经是 运行,有什么方法可以从启动画面的 onCreate 方法中找出,如果是这样,跳过初始化代码并将现有的主要 activity 置于前台?
在您的应用程序中保留一个静态布尔值 class。
初始化完成后,将其设置为true。
当启动画面开始时,检查布尔值,如果为真,则直接进入您的主程序 activity 而不做任何逻辑,并立即完成启动 activity.
如果为 false,则假设它是冷启动,您需要 运行 初始化代码。
无法从 Android 应用程序中查看 Activity 堆栈,因此您无法检查 Main activity 是否已经 运行宁.
第 3 方应用程序也无法检查您的应用程序是否 运行ning,然后根据此启动不同的 activity。