按HOME后重新启动应用程序时如何返回到最新启动的活动? [复制]

2024-01-07

熟悉的场景:我有一个Main启动的活动Game按下按钮时的活动。如果用户按 HOME,然后再次启动我的应用程序,则应显示GameActivity,这是他最后一次使用该应用程序时所做的事情。

然而,相反发生的事情是他得到了Main再次活动。我有一种感觉 Android 正在创造anotherMainActivity 的实例并将其添加到该应用程序的堆栈中,而不是只选择顶部的任何内容,因为如果我在重新启动应用程序后按 BACK,我就会进入游戏活动!并且每次都会调用Main.onCreate方法,而不是调用GameActivity.onResume。

My AndroidManifest.xml几乎是“简单的骨头”:

<activity android:name="MainActivity" android:label="@string/app_name">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

<activity android:name="GameActivity" android:label="@string/app_name">
</activity>

正如你所看到的,没有什么太花哨的。

新活动就是这样启动的,也很简单:

Intent intent = new Intent(this, GameActivity.class);
startActivity(intent);

理论上,这应该在 Android 中“开箱即用”,正如一个非常相似的问题的答案所示:在Android中维护标准应用程序Activity返回堆栈状态(使用singleTask启动模式) https://stackoverflow.com/questions/5086985/maintaining-application-state-in-android,但事实并非如此。

我一直在阅读和重新阅读有关 Activity、Task 和 Stacks 的文档,并浏览 SO 中的所有相关答案,但我不明白为什么这样一个简单的设置不能按预期工作。


哦,我想我已经找到答案了。

因为我是使用 IntelliJ 启动应用程序的,所以它启动应用程序的方式似乎与用户单击主屏幕小部件启动的方式不同。在另一个SO问题的答案中对此进行了解释:

这是因为用于启动应用程序的意图不同。 Eclipse 使用没有任何操作和类别的 Intent 启动应用程序。启动器使用 android.intent.action.MAIN 操作和 android.intent.category.LAUNCHER 类别的意图启动应用程序。安装程序会启动一个带有 android.intent.action.MAIN 操作且没有类别的应用程序。

Ref: 应用程序始终从根活动重新启动,而不是恢复后台状态(已知错误) https://stackoverflow.com/questions/2280361/app-always-starts-fresh-from-root-activity-instead-of-resuming-background-state

因此,我手动终止了手机中的应用程序,然后从主屏幕小部件重新启动它。然后打开GameActivity,然后按HOME。现在,当重新启动它时,GameActivity 仍然可见,并保持其 UI 状态,就像我离开它时一样。

我猜想之前按下快捷键时创建活动的新实例的原因是由于启动活动时使用了不同的意图。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

按HOME后重新启动应用程序时如何返回到最新启动的活动? [复制] 的相关文章

随机推荐

  • 使用 scilab 查找交点

    如何使用以下方法找到下图中的交点fsolve功能 from scilab 这是我到目前为止所尝试过的 function y f x y 30 0 x endfunction function y g x y zeros x k1 find
  • 为什么 Fluent NHibernate AutoMappings 在 Id 上添加下划线(例如 Entity_id)?

    您好 使用流畅的 nhibernate 自动映射 来映射这个 public virtual int Id get set snip public virtual MapMarkerIcon MapMarkerIcon get set to
  • 从 github repo 子文件夹中 npm 安装包

    当包位于子文件夹内时 是否可以从 github 安装 npm 包 例如 我们有 Microsoft BotBuilder 存储库 https github com Microsoft BotBuilder https github com
  • Angular2 完全销毁当前组件

    我尝试搜索 google 和 stackoverflow 但找不到答案 所以我的问题很简单 如何删除角度 2 4 中的当前组件 example div Remove Current Component div remove event th
  • GoogleMap InfoWindow 内的单击事件

    我想在信息窗口和信息窗口内的按钮中显示谷歌地图位置详细信息 以便单击该按钮后 将显示一个新的 QMainwindow 此时我只能显示带有关闭按钮的默认信息窗口 是否可以在信息窗口内添加可点击事件 您可以将 InfoWindow 的内容设置为
  • 在 IMAP 中创建文件夹不起作用

    我正在努力在 IMAP 中创建一个文件夹 我正在使用 gmail 到目前为止 这是我尝试过的 public boolean createFolder String folderName throws MessagingException s
  • 声明式与编程式 GraphQL

    我正在将 GraphQL 用于新的全栈项目 并且我已经研究了许多概念并开始了我的第一个项目 我的问题与使用声明式与编程式 GraphQL 架构定义有关 基本上我能看到的都在GraphQL 官方网站 http graphql org 使用声明
  • 使用 Interface Builder 检测 UIView 上的触摸

    如何检测触摸UIviewController for a UIView仅使用代码 没有 Interface Builder 我找到了 TouchBegan 方法 但它从未被调用过 我没有初始化有关此方法的任何其他内容 void touche
  • 是否可以在不登录的情况下冒充用户?

    是否可以在不提供用户名 密码的情况下模拟用户 基本上 我想得到CSIDL LOCAL APPDATA对于使用以下命令的用户 不是当前用户 ShGetFolderPath 功能 我目前拥有的只是该用户的 SID 您可以通过调用 ZwCreat
  • Nodejs - HTTP 范围支持/部分文件下载

    我正在创建一个音乐网络应用程序 用于流式传输我存储在 MongoDB GridFS 中的 MP3 我的问题 如何添加 http 范围支持 以便我可以开始流式传输音频文件 1 2 而无需等待缓冲区 我知道GridFS支持读取X字节 X字节 所
  • 为什么选择 UnityEvent 而不是本机 C# 事件?

    我的意思是 UnityEvents 比原生 C 事件慢 并且它们仍然存储对接收器的强引用 因此 我发现使用 UnityEvents 而不是原生 C 事件的唯一有效原因是它们与编辑器的集成 我是否忽略了什么 我是否忽略了什么 不 你没有忽视任
  • Java - 将二进制解析为长整数[重复]

    这个问题在这里已经有答案了 我有一个数字的二进制表示形式 想将其转换为 long 我有 Java 8 public class TestLongs public static void main String args String a L
  • Android WebView 下载不工作

    我创建了一个包含 html 表单页面的 Web 视图 在提交表单 使用 post 方法 时 它应该下载该文件 我已经实施了webview download listener这样我就可以处理下载了 Override public void o
  • 如何手动创建 UISplitView?

    我有一个应用程序将导航到 UISplitView 完全在另一个视图内 如下所示 void switchToMyDayView NSLog Show My Day Screen if self myDayController view sup
  • Dart 中用于获取数据类型大小的函数/运算符

    我想知道 Dart 中分配给不同数据类型的内存量 但我找不到函数 运算符 例如sizeofC 中的运算符来执行此操作 我已经提到了dart core为此目的图书馆 但仍然找不到任何合适的方法 那么 是否有其他方法可以获取数据类型的大小 或者
  • 使用 SymPy 求解方程组

    我正在尝试使用 SymPy 0 7 1 求解一组方程 from sympy import equations Eq S vf S vi a t Eq S d S vi t 1 2 a t 2 Eq S a S 10 Eq S d S 60
  • BASH 在变量非文件中提取字符串后的值[重复]

    这个问题在这里已经有答案了 我发现了一个无法解决的奇怪问题 我需要提取变量中的一些值 这些值位于字符串后面 本例中变量的名称是 DSLSTATE 这是其中值的示例 NewEnable 1 NewStatus Up NewDataPath F
  • 使用 matplotlib 在 qiskit 中可视化电路

    我正在学习如何使用 qiskit 并且正在使用 jupyter 笔记本 但是每次我尝试使用属性绘制来可视化电路时 我都会收到此错误 import qiskit from qiskit import from qiskit import IB
  • 如何在 Linux、Mac 和 Windows 上从 Java 启动 .NET 应用程序?

    我想从 Java 环境的上下文中启动 NET 应用程序 与 Mono 兼容 我的猜测是 我必须以某种方式确定是否安装了 mono 找到位置并使用 NET 应用程序路径作为参数启动它 但什么是可靠的方法呢 或者 还有更好的方法 也许我应该澄清
  • 按HOME后重新启动应用程序时如何返回到最新启动的活动? [复制]

    这个问题在这里已经有答案了 熟悉的场景 我有一个Main启动的活动Game按下按钮时的活动 如果用户按 HOME 然后再次启动我的应用程序 则应显示GameActivity 这是他最后一次使用该应用程序时所做的事情 然而 相反发生的事情是他