当应用程序处于后台时,startActivity() 不起作用(在这种特殊情况下)

kyr*_*rax 6 android background android-intent start-activity android-intentservice

我正在尝试将我的应用程序从后台带到前台。在onHandleIntent()我的自定义IntentService课程中,我有:

Intent intent = new Intent();
intent.setClass(getApplicationContext(), MainActivity.class); // Also tried with "this" instead of getApplicationContext()
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setAction(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER); 
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

现在这段代码乍一看可以工作,但我发现了一个不起作用的场景。如果您打开了应用程序并通过主页按钮将其置于后台并startActivity()在大约 5 秒内执行,则应用程序到达前台之前将会有延迟。这是一个已知的实现,您可以在 stackoverflow 上找到讨论的主题。在这种情况下,应用程序成功从后台转到前台。

如果您重复上面相同的实验,但不要等待应用程序进入前台,而是在手机上浏览(滚动、滑动等)(我正在浏览谷歌游戏商店)。结果是,它将startActivity()被调用,但应用程序不会进入前台。

我不是在寻求解决方案,而是更多地解释为什么会发生这种情况。这是有意的行为吗?

小智 0

使用你的班级背景。例如

意图意图=新意图(上下文,其他.类)

而不是 getapplicationContext()