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

标签 android android-intent background start-activity android-intentservice

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

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);

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

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

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

最佳答案

使用您类(class)的上下文。 例如:

Intent intent=new Intent(context, other.class)

而不是 getapplicationContext()

关于android - 当应用程序处于后台时,startActivity() 不起作用(在这种特殊情况下),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33134264/

相关文章:

android - 蓝牙配对并连接设备

android - 试图防止 OutOfMemoryError 看到 MAT - Android

android - 以编程方式设置 Intent 类别

ios - 15 分钟后,后台位置更新在 iOS 中不起作用?

android - MultiChoiceModeListener.onItemCheckedStateChanged() 仅在选中项目时执行

android - 在 super.onCreate() 之前将 Hilt 注入(inject)到 Activity 中

java - Android - 检查我来自哪个类(class)

Android Intent.FLAG_ACTIVITY_SINGLE_TOP 和 Intent.FLAG_ACTIVITY_CLEAR_TOP

linux - Python 脚本即使在后台运行时也会输出到控制台

android - 尝试调用 Messenger 时后台线程出现 NullPointerException