首页 > 解决方案 > 广播接收器中的 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 次)。

该应用程序适用于繁忙的电源连接销售点设备。

标签: androidandroid-activitybroadcastreceiverandroid-background

解决方案


推荐阅读