当app在后台时,startActivity()不起作用(在这种特殊情况下)

问题描述 投票:1回答:3

我正在尝试将我的应用从背景带到前台。在我定制的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()将被调用但应用程序不会出现在前台。

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

android android-intent background start-activity android-intentservice
3个回答
0
投票

使用班级的上下文。例如 :

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

而不是getapplicationContext()


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

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)        
© www.soinside.com 2019 - 2024. All rights reserved.