按主页按钮并从应用程序图标调用 onCreate 再次访问应用程序?

2024-02-13

我有一个离线在线应用程序,我发现其中有一个奇怪的问题,可能不是,但我不明白。
应用程序的要求是,如果互联网可用,即使从启动应用程序或恢复,我也会调用网络服务并将数据存储在 sqlite 中,否则应用程序将保持离线模式,
我有 2 个活动,第二个活动包含一个 id,我通过意图传递它(这一点很重要),
我的问题:
如果我处于第二个活动,并且互联网正在运行,并且我按主页按钮,那么第二个活动暂停,然后停止,这是 Android 中的默认行为,我转到设置,关闭 wifi,然后按应用程序icon再次回到我的应用程序,在这里我很困惑,我希望我的应用程序现在将在onResume,但是当我在 logcat 中看到它时已创建呼叫和应用程序 崩溃,发生 nullPointerException,因为第二个活动没有该 id,我通过了意图。

Note:
如果我使用最近的应用程序按钮进入“设置”,然后在关闭 wifi 后再次返回,并重复所有这些行为,然后工作正常,它的 onResumes 称为而不是 oncreate ..

我的问题
为什么它在 onCreate 中进行,而我的期望是在我从应用程序图标返回时在 onResume 中?


NPE 的原因很明确,您的第二个活动没有价值并且崩溃了。

为什么你会有不同的行为呢!?

这是因为启动意图不同。当你“任务切换”时,Android 只是停止你的应用程序,但将其留在那里(没有保证)以防万一您想切换回来。

回家(带 home)清楚地表明您想要离开应用程序,尽管它将保留在内存中并缓存(只要有可用内存),但可以通过启动器(或您所说的应用程序图标)返回)触发 LAUNCHER 类别(首先进入您的 Activity 1)。

看一眼this https://stackoverflow.com/q/6356467/2684StackOverflow 问题(和答案)以更好地理解后果。

无论如何,您的问题是您的应用程序必须始终设计为在不一致的状态下恢复并能够恢复。安卓will杀死你的参考文献,会摧毁您的变量,并且很可能将您的应用程序发送到hell即使你让它运行,一夜之间......如果手机进入待机状态,没有做任何事情的进程很可能会被暂停/停止并可能被杀死。

重新设计您的应用程序,这样这就不再是问题了。

你说:

“我有 2 个活动,第二个活动包含一个 id,我通过了 通过意图(这一点很重要),”

那么,为什么不让它变得更简单并拥有一个活动和两个片段呢?然后使用Fragment Arguments来传递值?

或者为什么不将值存储在首选项和/或本地数据库中并在 onCreate 期间恢复它?

另外,为什么不这样做,以便如果 Activity 2 没有值,它会调用 Activity 1 并自行关闭(比崩溃更好,是吗?)。

Etc.

正如您所看到的,您应该考虑很多事情。总而言之,never相信你的应用程序会活着,因为它不会。

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

按主页按钮并从应用程序图标调用 onCreate 再次访问应用程序? 的相关文章

随机推荐

  • 将 BytesMessage 转换为字符串?

    最好的转换方式是什么ByteMessage to String 我有以下代码 我们有更干净的方法吗 BytesMessage byteMessage set byteMessage byte byteArr new byte int byt
  • jsTree 禁用某些复选框

    将 jsTree 3 1 0 与复选框插件一起使用是否可以允许并非所有复选框都进行检查 禁用其中一些 我在这里找到了旧版本 jsTree 的解决方案jstree 禁用复选框 https stackoverflow com questions
  • 比较日期时间函数 cypress

    我有一个表单 允许用户输入日期范围 并且输出将仅包含该特定日期的结果 我可以使用 type 函数将日期输入到表单中 但是 我不确定如何检查结果是否在指定的范围内 例如 如果输入的日期是 17 03 2019 我应该能够使用这样的代码检查表中
  • Optaplanner 将客户从有效的 VRP 解决方案中删除

    基于此question https stackoverflow com questions 47913276 optaplanner vrp remove customer from working solution我尝试了以下方法 pub
  • 我该如何为这个不变量编写一个循环?

    这些是查找数组 b h k 最小值的算法的断言 Precondition h lt k lt b length Postcondition b x is the minimum of b h k 这是这个不变量的正确循环吗 不变式 b x
  • 将工具提示保留在浏览器窗口内? (不使用插件)

    我的工具提示代码如下 HTML CSS a tooltip span display none padding 5px border 1px solid 000 background 999 position absolute color
  • 如何使用谷歌地图路径点进行交通

    我知道我们不允许使用谷歌地图 API 路径点进行 TRANSIT 有什么方法 可能 可以解决这个问题 让谷歌地图在路径点中找到指向多个地址的方向 但仅用于 TRANSIT 来自文档 https developers google com m
  • (a==1 && a==2 && a==3) 在 Java 中可以计算为 true 吗?

    我们知道它可以在 JavaScript 中 https stackoverflow com q 48270127 476716 但是在Java中是否可以在下面给出的条件下打印 成功 消息 if a 1 a 2 a 3 System out
  • 跨 pandas 行/回归线应用公式

    我正在尝试在数据框的行上应用公式来获取行中数字的趋势 下面的示例一直有效 直到部分 apply用来 df pd DataFrame np random randn 10 4 columns list ABCD axisvalues list
  • $.ajax删除请求在capybara-webkit中不发送数据参数

    我发现当我通过 capybara webkit 执行 ajax DELETE 请求时 它们没有向控制器发送数据参数 但是 当我使用 selenium 运行测试套件时 数据参数确实被发送 并且测试通过 我的代码如下所示 document on
  • 类型转换和类型断言有什么区别?

    之间的主要区别是什么 v t aType type assertion v aType t type conversion 我应该在哪里使用类型断言或类型转换 类型断言断言t 接口类型 实际上是一个aType and t将是一个aType
  • 以编程方式检测 Android 上是否安装了应用程序

    我已经为我的 Android 应用程序注册了一个 url 方案 假设 myapp host 在我的其他应用程序上 我可以使用 Intent 启动该应用程序 但如何在不启动它的情况下检查第一个应用程序是否已安装 在 iOS 中 这很简单 UI
  • Bokeh:使用复选框小部件隐藏和显示绘图

    我在将 Widget 回调与 Bokeh 一起使用时遇到一些困难 在复选框小部件的帮助下 我想显示 隐藏相应的绘图 与的区别这个问题 https stackoverflow com questions 38705123 using mult
  • Kafka 反序列化嵌套泛型类型

    给定一个这样的类 public class Message
  • 找到图像 src :包含?

    大家早 我有一个图像列表 如下所示 ul style display none li img src afx4000z navy icon 1 thumb jpg li li img src afx4000z green icon 1 th
  • AngularJs 完整的 Jquery 选择不起作用

    我正在尝试使用 Jquery 插件在 AngularJS 指令中操作 DOM 我不确定 AngularJs 是否使用完整版本的 Jquery 尽管完整版本脚本位于头部 而 AngularJs 脚本位于主体 所以理论上 AngularJS 应
  • 如何在 ClearCase 中创建某些项目或流的快照视图?

    我想获取可以在clearcase项目资源管理器中找到的某些流或项目的内容 2 1 cleartool descr l project myProject myPVob 通过一些 grep 您可以获得组件 可写或不可写 和策略的列表 如果您只
  • 在 C/C++ 中打印前导空格和零

    我需要在数字前打印一些前导空格和零 以便输出如下所示 00015 22 00111 8 126 在这里 我需要打印leading spaces当数字是even and leading zero when odd 我是这样做的 int i d
  • 应用程序脚本我的执行条目延迟/丢失

    最近 我的执行遇到了添加执行条目延迟的问题 Google Sheet 上的应用程序脚本将成功运行 基于输出 但执行日志中没有条目或条目延迟 10 分钟以上 更令人担忧的是 今天我收到一封自动生成的电子邮件 其中包含脚本错误 很抱歉 服务器发
  • 按主页按钮并从应用程序图标调用 onCreate 再次访问应用程序?

    我有一个离线在线应用程序 我发现其中有一个奇怪的问题 可能不是 但我不明白 应用程序的要求是 如果互联网可用 即使从启动应用程序或恢复 我也会调用网络服务并将数据存储在 sqlite 中 否则应用程序将保持离线模式 我有 2 个活动 第二个