在 android 中每次应用程序从后台启动时启动第一个屏幕
Start the First screen each time app comes from background in android
我的应用有 5 个活动(A、B、C、D、E)。该应用程序可以在这些活动之间导航。当用户按下设备中的主页按钮时,应用程序进入后台,当应用程序进入前台后,首先应该启动 activity,即 A activity.
示例:D activity 中的应用程序,按主页后,应用程序进入后台,当再次进入前台时,它应该打开 A activity 而不是 D.
我尝试过的解决方案是启动模式,我为 A activity (singleInstance) 设置了启动模式,但无法找到所需的解决方案。
你可能会得到 ondestroy() 或 onpause() 方法。在上面你可以做
Intent intent = new Intent(this, A.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
finish(); //
当您按 Home-Button 更改为 Activity 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);
}
您可以在清单文件中为 Activity A 设置 android:clearTaskOnLaunch="true" 来实现您想要的:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.beispieldomain.Whosebugxmlparse">
<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>
看这里:
要启动相同的 Activty,您应该在应用程序进入 background.When 时清除所有 Activity 应用程序进入后台使用下面的代码将清除当前 activity 和所有其他 activity 在堆栈中。
对于 API 16+,使用
finishAffinity();
对于较低的(Android 4.1 较低),使用
ActivityCompat.finishAffinity(YourActivity.this);
我的应用有 5 个活动(A、B、C、D、E)。该应用程序可以在这些活动之间导航。当用户按下设备中的主页按钮时,应用程序进入后台,当应用程序进入前台后,首先应该启动 activity,即 A activity.
示例:D activity 中的应用程序,按主页后,应用程序进入后台,当再次进入前台时,它应该打开 A activity 而不是 D.
我尝试过的解决方案是启动模式,我为 A activity (singleInstance) 设置了启动模式,但无法找到所需的解决方案。
你可能会得到 ondestroy() 或 onpause() 方法。在上面你可以做
Intent intent = new Intent(this, A.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
finish(); //
当您按 Home-Button 更改为 Activity 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);
}
您可以在清单文件中为 Activity A 设置 android:clearTaskOnLaunch="true" 来实现您想要的:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.beispieldomain.Whosebugxmlparse">
<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>
看这里:
要启动相同的 Activty,您应该在应用程序进入 background.When 时清除所有 Activity 应用程序进入后台使用下面的代码将清除当前 activity 和所有其他 activity 在堆栈中。
对于 API 16+,使用
finishAffinity();
对于较低的(Android 4.1 较低),使用
ActivityCompat.finishAffinity(YourActivity.this);