0

我有一个仅在第一次打开应用程序时运行的 Activity。每次我再次打开应用程序时,这个 Activity 都不会运行(这没关系)。当我第一次打开我的应用程序时按下返回按钮时,问题就出现了。该活动再次出现,我不希望这种情况发生。我怎样才能防止这种情况发生?

这是我在主要活动的 onCreate 上的 SharedPreferences 代码(变量是在外部创建的):

prefs = getSharedPreferences("com.mycompany.myAppName", MODE_PRIVATE);

这是让我的应用程序知道它是否第一次运行的 onResume 方法:

`@Override
    protected void onResume() {
        super.onResume();
        if (prefs.getBoolean("firstrun", true)) {
            // Do first run stuff here then set 'firstrun' as false
            Intent myIntent = new Intent(MainActivity.this, StoryActivity.class);
            myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
            MainActivity.this.startActivity(myIntent);
            prefs.edit().putBoolean("firstrun", false).commit();
        }
       }`
4

2 回答 2

1

在启动之前调用finish()你的直接到下一个。您还可以在您的中声明noHistory=true以防止保留。MainActivityIntentActivityAndroidManifest.xmlActivity

您还可以使用PackageManager.setComponentEnabledSetting(...)来完全更改您的“启动器”活动,一旦它被查看。

于 2017-05-10T17:59:15.643 回答
0

因为您的活动在 starActivity.Use 之后完成,所以检查工作代码: @Override protected void onResume() { super.onResume(); if (prefs.getBoolean("firstrun", true)) { prefs.edit().putBoolean("firstrun", false).commit(); // Do first run stuff here then set 'firstrun' as false Intent myIntent = new Intent(MainActivity.this, StoryActivity.class); myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); startActivity(myIntent); } }

于 2017-05-10T18:00:39.160 回答