android - 重新进入应用程序,它从头开始?

标签 android android-intent

在我的 MainActivity 类中,我有一个启动新 Activity 并终止当前 Activity 的方法:

Intent intent = new Intent(this, NewActivity.class);
startActivity(intent);
finish();

在新 Activity 中,如果我按下后退按钮,应用程序会按预期最小化/关闭,但是当我重新打开应用程序时,它没有出现在 NewActivity 中,而是返回到 MainActivity!

为什么会这样?

最佳答案

因为当它重新开始时,也就是说,即使在您结束任务之后,它也会启动“Main/Launcher”Activity。您在 AndroidManifest 中指定它。

<activity android:name=".MainActivity"
    ...>
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>

默认情况下,按下后退按钮会结束当前的 Activity,如果当前任务中不存在其他 Activity,则已知该任务已经结束。

对此的解决方案是在 SharedPreferences 中保存一些标志或状态,或者以某种方式保留它以再次读取它以将流定向到 NewActivity

在您的 MainActivity 中,执行如下操作:

@Override
protected void onCreate(Bundle savedInstanceState) {
    if(shouldStartNewActivity()) {
        Intent intent = new Intent(this, NewActivity.class);
        startActivity(intent);
        finish();
    } else {
        super.onCreate(savedInstanceState);
    }
}

private boolean shouldStartNewActivity() {
    //Your logic to check if NewActivity should be started directly
}

关于android - 重新进入应用程序,它从头开始?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36563157/

相关文章:

java - 处理屏幕方向变化

android - 添加 "(" ")"如何更改 gradle 警告消息?

android - 如果 Activity 由同一个类(class)实现,如何返回到特定 Activity

android - 如何从子 Activity 完成父 Activity

Android:无论如何都可以通过javascript控制音量

Android Studio 当包含 .aar 模块时出现错误 :Execution failed for task ':app:processDebugManifest' . [Duplicat]

android - POST 请求 Android 带有 json 中的参数

安卓 : How to remove shared preferences in another package

java - 您是否应该在每个 Intent 到达 android 中的实际 Activity 之前将其传递给每个 Intent

android - 如何在 Nexus 7 上触发 MediaScan?