android - 如何在暂停应用程序后打开上次打开的 Activity

标签 android android-layout

我尝试将 Splash Activity 添加到我的应用程序 此启动 Activity 在程序首次启动时打开

但是当应用程序运行并跳过启动 Activity 到主要 Activity 时 用户按住并转到主屏幕

之后用户将返回应用程序,,

问题就在这里 所以应用程序再次重新打开启动 Activity

我不希望应用程序每次恢复 Activity 时都打开启动 Activity 我需要直接打开主要 Activity ...

我试过这段代码,但它对我不起作用

在飞溅 Activity 中......

public class SplashActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        Class<?> activityClass;

        try
        {
            SharedPreferences prefs = getSharedPreferences("X", MODE_PRIVATE);
            activityClass = Class.forName(prefs.getString("lastActivity", MainActivity.class.getName()));
        }
        catch(ClassNotFoundException ex)
        {
            activityClass = MainActivity.class;
        }

        startActivity(new Intent(this, activityClass));
        
        Button btn = (Button)findViewById(R.id.button1);
        btn.setOnClickListener(new View.OnClickListener()
        {           
            @Override
            public void onClick(View v)
            {
                Intent intent = new Intent(MainActivity.this,Main2Activity.class);
                startActivity(intent);
            }
        }
        );
    }


}

在主 Activity 中我使用了这段代码

public class Main2Activity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        
    }
    
    
    @Override
    protected void onPause() {
        super.onPause();

        SharedPreferences prefs = getSharedPreferences("X", MODE_PRIVATE);
        Editor editor = prefs.edit();
        editor.putString("lastActivity", getClass().getName());
        editor.commit();
    }

}

最佳答案

使用 Application 类保存全局标志:

public class App extends Application {
    private static boolean sFirstRun = false;

    public static boolean fetchFirstRun() {
        boolean old = sFirstRun;
        sFirstRun = false;
        return old;
    }

    //--called when app process is created--
    @Override
    public void onCreate() {
        super.onCreate();

        sFirstRun = true;
    }
}

并在 manifest.xml 中添加:<application android:name=".App"

现在,App.fetchFirstRun()仅当从头开始创建 App 进程时才为真。只要应用程序正在运行,后续调用就会返回 false。

关于android - 如何在暂停应用程序后打开上次打开的 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14158624/

相关文章:

java - 如何从 Firebase 实时数据库中获取某个键的所有值?

android - 从 Activity Kotlin 中获取额外的字符串

android - 使用 Firebase 填充 ListView 时遇到问题

android - Jetpack Compose 替代 View 系统的 'animateLayoutChanges'

java - 更改 TextView 中特定单词的颜色

android - 如何使 Linearlayout 可滚动,两个 ListView 可滚动,包装其内容

android - ListView Headers 与 Android 设置相同

android - 对于 feed 来说,RecyclerView 的替代品有哪些

android - gmail-api 标记为 "read"

android:在布局中的许多 ImageView 上单击监听器