android - 广播接收器中的 context.startActivity 有时不起作用(SDK 27 设备上的 targetSDK 19)
问题描述
在某些非常有限的情况下,我调用startActivity
了隐式广播接收器的函数。onReceive
Intent transactionIntent = new Intent(context, TransactionActivity.class);
transactionIntent.putExtra(Constants.Extras.ORDER_ID, orderId);
transactionIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
context.startActivity(transactionIntent);
我在此行之前有日志并记录onCreate
了活动的功能。一些客户报告此活动的随机实例没有自行创建。我可以在日志中看到startActivity
被调用和onCreate
未被调用的日志。我肯定知道其中一个是 Android 8.1 Oreo 设备。我的目标 SDK 是 19(绝大多数是旧设备,这不是 Play 商店中的应用程序)。我还可以告诉应用程序的系统设置中的后台活动切换没有关闭,所以这不是问题。
这会发生什么情况(极端的内存压力?)以及如何捕获它以验证发生了什么?
编辑:
该应用程序没有崩溃(此版本的应用程序没有记录崩溃,它只setContentView
在记录活动创建之前什么都不做)。我不认为设备睡眠是一个问题,因为我的目标是前 M,打瞌睡模式等不会发挥作用。用户在此调用失败前几秒钟也在使用该应用程序startActivity
,30 秒后他们也在使用该应用程序,因此该窗口似乎不足以允许任何类型的睡眠或唤醒锁定问题。我也不认为用户可以设法在应用程序调用startActivity
和之间将应用程序从内存中刷出onCreate
,这种情况偶尔会发生(因为这个用户发生了 6 次中的 1 次)。
该应用程序适用于繁忙的电源连接销售点设备。
解决方案
推荐阅读
- ubuntu - 如何在 VSCode + Vim + Ubuntu 中使用其他语言(例如俄语)而不自行更改布局?
- javascript - 尝试在 JavaScript 中编写递归异步搜索
- c++ - 递归计数反转
- javascript - 无法读取未定义错误 JavaScript 的属性“forEach”
- javascript - 像素化动画
- javascript - 从导入的函数返回值
- ssl - 对于具有名称约束的证书,OpenSSL 验证因“允许的子树违规”而意外失败
- file-upload - 给出无效文件时,RequestImageFileAsync 不显示错误
- python - 尝试使用字母频率解密替换
- r - 如何反转 t.test() 的组比较顺序?