繁体   English   中英

在应用程序中仅调用一次活动,并在应用程序被杀死后重新启动时再次显示

[英]Call an activity only once in the app and show it again when the app restart after being killed

我正在开发一个应用程序,在该应用程序中,我必须在应用程序生命周期中仅显示一次活动。

我正在做的是在MainActivity.java调用Activity 1 ,因此在我进入应用程序后以及每当我回到MainActivity.java时,都会调用Activity 1 我只想显示一次。

然后,当用户终止该应用程序并重新启动它时,应该再次显示Activity 1

这是我在MainActivity.java所做的事情:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    startActivity(new Intent(MainActivity.this,
                Activity1.class));

    }

我尝试使用以下代码,但在首次安装该应用程序时,它只能运行一次。

private boolean isFirstTime() {
    SharedPreferences preferences = getPreferences(MODE_PRIVATE);
    boolean ranBefore = preferences.getBoolean("RanBefore", false);
    if (!ranBefore) {
        // first time
        SharedPreferences.Editor editor = preferences.edit();
        editor.putBoolean("RanBefore", true);
        editor.commit();
    }
    return !ranBefore;
}

如何修改上面的代码,以满足我的要求。

任何帮助将不胜感激。

更改

return !ranBefore

return ranBefore

在我看来,您总是返回相同的内容,而不是初始化的变量。 另外,您可以将代码直接放在该方法中启动Activity 然后,您甚至不必担心return语句。 更改SharedPreferences的值后,它将永远不会再运行它

编辑

您可以在onCreate()中将SharedPreferences值设置为false。 如果您在转到另一个Activity时没有完成Activity ,并且如果它是您的主要Activity那么您可能永远都不想完成该活动,除非您退出该应用程序

您应该在onDestroy中将ranBefore设置为false

@Override
public void onDestroy() 
{
    SharedPreferences preferences = getPreferences(MODE_PRIVATE);
    SharedPreferences.Editor editor = preferences.edit();
    editor.putBoolean("RanBefore", false);
    editor.commit();
}

我已经使用SharedPreferences解决了这个问题。 我所做的是在Splash上​​,我在SP输入了一些值,并在MainActivity检查了该值是否显示活动,否则不要打开对话框。 keyCodeBack() ,我已经清除了SP ,这有助于我满足要求。

使用共享的首选项。

若要终止该活动,请在onClick()上使用class.finish()。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM