我试图将我的应用从背景带到前台。在我的自定义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);
现在这段代码一见钟情,但我找到了一个不起作用的场景。如果您打开了应用程序并通过主页按钮将其置于后台并在约5秒内执行startActivity()
,那么在应用程序到达前台之前会有一段延迟。这是一个已知的实现,您可以在stackoverflow上找到讨论的主题。在这种情况下,应用程序成功地从后台到前台。
如果您重复上述相同的实验,但不是等待应用程序到达前台,而是围绕手机浏览(滚动,滑动等)(我在Google Play商店中浏览)。结果是startActivity()
将被调用但应用程序不会出现在前台。
我不是要求解决方案,而是更多地解释为什么会发生这种情况。这是预期的行为吗?
答案 0 :(得分:0)
使用班级的上下文。 例如:
Intent intent = new Intent(context,other.class)
而不是getapplicationContext()
答案 1 :(得分:0)
使用代码:
private void startMenuActivity() {
Intent i = new Intent(this, MainActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
| Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
finish();
}
答案 2 :(得分:0)
下面的代码对我有用,
val login = Intent(applicationContext, SignInActivity::class.java)
login.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
login.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
applicationContext.startActivity(login)