Android 在应用程序中只调用一次活动,并在应用程序被终止后重新启动时再次显示该活动

Android 在应用程序中只调用一次活动,并在应用程序被终止后重新启动时再次显示该活动,android,android-activity,sharedpreferences,Android,Android Activity,Sharedpreferences,我正在开发一个应用程序,其中我必须在应用程序生命周期中只显示一次活动 我所做的是在我的MainActivity上。java我正在调用一个活动1,所以当我在我的应用程序中移动之后,每当我返回MainActivity时,java我的活动1都会被调用。我只想展示一下 当用户关闭应用程序并重新启动时,应再次显示活动1 以下是我在MainActivity.java中所做的工作: @Override protected void onCreate(Bundle savedInstanceState) {

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

我所做的是在我的
MainActivity上。java
我正在调用一个
活动1
,所以当我在我的应用程序中移动之后,每当我返回
MainActivity时,java
我的
活动1
都会被调用。我只想展示一下

当用户关闭应用程序并重新启动时,应再次显示
活动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
语句。更改
SharedReferences

编辑


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

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

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

我已使用
SharedReferences
解决了此问题。我所做的是在Splash上,我在
SP
中输入了一些值,并在
main活动上检查,如果值匹配,则显示活动,否则不要打开对话框。在
keyCodeBack()
上,我已清除了
SP
,这有助于满足我的要求。

使用共享首选项


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

您的意思是在应用程序生命周期中一次,还是在用户第一次启动应用程序时一次,以后不再使用?一旦只有用户启动应用程序,我想显示活动。如果用户正在我的活动中移动,并且他来到MainActivity,我不想再次向用户显示Activity1。并且,当用户退出应用程序并再次重新启动应用程序时,将再次显示Activity1。除非用户退出应用程序,否则不会显示Activity1。对此进行了更改,但没有解决我的问题。同样的场景还在继续。我只想在应用程序关闭之前和关闭之前显示一次Activity1。无论用户访问MainActivity的次数如何。当用户退出应用程序后再次重新启动应用程序时,再次向他显示Activity1,然后直到他在应用程序中时才向他显示。你明白我的问题了吗?还是不为我工作。我也尝试过做强制停止,但没有成功。在执行强制停止后,我的活动1应该再次出现,但不,它不会出现。你能通过代码向我解释你所说的吗?我试试。如何将
ranBefore
设置为false?我应该把上面的代码放在哪里呢?
private boolean isFirstTime()
或'if(!ranBefore)`?上面的代码将ranBefore设置为false,把这些代码放在onDestroy()中这对我不起作用。在我关闭我的应用程序并将其导航到另一个活动到mainactivity后,它再次重复自身,意图被传递。关闭你的应用程序是什么意思?当你关闭应用程序时,应用程序的生命周期是否结束?是的,应用程序的生命周期已结束。但再次以不同的方式重复我的prm。我只想显示一次
活动1
,直到和除非应用程序关闭。无论用户进入
main活动多少次
。当用户退出应用程序后再次重新启动时,再次向他显示
Activity1
,然后直到他在应用程序中时才显示他。你明白我的问题了吗?
@Override
public void onDestroy() 
{
    SharedPreferences preferences = getPreferences(MODE_PRIVATE);
    SharedPreferences.Editor editor = preferences.edit();
    editor.putBoolean("RanBefore", false);
    editor.commit();
}