我使用 android 10 [android Q、galaxy 10],
我用的是android studio 3.3,
使用AVD,并制作了一个api 29 [android 10]虚拟电话。
在虚拟机上,
我执行我的应用程序,然后启动其他应用程序,例如日历、计算器。
所以我的应用程序活动进入后台模式。
当我在 BroadcastReceiver 收到消息时。
我调用startActivity。
在这里,代码-->
公共类 myReceiver 扩展了 BroadcastReceiver {}
public void onReceive(Context context, Intent intent)
{
Intent intentRun = new Intent(context, LoginSuccess.class);
intentRun.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TASK);
context.startActivity(intentRun);
}
但 LoginSuccess 活动不显示。
[当我的应用程序处于后台模式时]
使用相同的代码,LoginSuccess 活动显示得很好
当我的应用程序处于前台模式时。
调用堆栈捕获图像 https://i.stack.imgur.com/tPJeD.png
上图显示了调用堆栈
就在我在广播接收器中调用 startActivity 之前。
我已阅读 Android 10 后台活动问题指南。
[developer.android.com/~~某个位置]
在指导线上,
我才知道
如果该活动存在于调用堆栈中,则可以启动它
即使在后台模式下。
上面的代码,
它尝试启动最近调用堆栈中存在的活动。
为什么 startActivity 调用在后台模式下失败?
[也许不会失败,但无论如何都没有激活到前台]