每次应用程序来自android中的后台时,启动第一个屏幕

时间:2018-04-11 09:57:45

标签: java android android-activity kotlin launchmode

我有一个有5个活动的应用程序(A,B,C,D,E)。该应用可以在这些活动之间导航。当用户按下设备中的主页按钮时,应用程序进入后台,当应用程序到达前台时,应启动第一个活动,即活动。

示例:在D活动中的应用程序,在按下主页后,应用程序变为背景,当它再次出现在前景时,它应该打开一个活动而不是D.

我尝试的解决方案是启动模式,我为A活动(singleInstance)设置了启动模式,但无法找到所需的解决方案。

4 个答案:

答案 0 :(得分:4)

对于启动相同的Activty,您应该在应用程序进入后台时清除所有活动。当应用程序进入后台时,请使用以下代码清除当前活动和堆栈中的所有其他活动。

对于API 16+,请使用

finishAffinity();

对于较低版本(Android 4.1较低版本),请使用

ActivityCompat.finishAffinity(YourActivity.this);

答案 1 :(得分:3)

按主页按钮更改为活动A.也许这会起作用:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
    if (keyCode == KeyEvent.KEYCODE_HOME)
    {
        Intent intent = new Intent(this, MyActivityName.class); 
        //replace MyActivityName.class with the name of your Activity A
        startActivity(intent);
    }
    return super.onKeyDown(keyCode, event);
}

答案 2 :(得分:2)

你可能会得到ondestroy()或onpause()方法。你可以做到

Intent intent = new Intent(this, A.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent);
finish(); //

答案 3 :(得分:2)

您可以在清单文件中为活动A设置android:clearTaskOnLaunch =“true”以达到您想要的效果:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.beispieldomain.stackoverflowxmlparse">

    <application
        ...
        <activity 
            android:name=".MainActivity"
            android:clearTaskOnLaunch="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

看看这里:

Managing Tasks
clearTaskOnLaunch