0

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

我正在做的是MainActivity.java我正在调用一个Activity 1,所以当我进入我的应用程序之后,每当我回到我的应用程序时都会MainActivity.javaActivity 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;
}

我怎样才能修改上面的代码,以满足我的要求。

任何形式的帮助将不胜感激。

4

4 回答 4

0

改变

return !ranBefore

return ranBefore

在我看来,你总是返回相同的东西而不是你初始化的变量。此外,您可以将代码Activity直接放在该方法中。那么你甚至不必担心一个return声明。在您更改值后,它将永远不会再次运行它SharedPreferences

编辑

您可以在中将您的SharedPreferences值设置为 false onCreate()Activity如果您在去另一个地方时没有完成您的工作,并且如果它是您的主要工作Activity,那么您可能永远不想完成它,直到您退出应用程序

于 2013-04-17T17:40:52.930 回答
0

你应该ranBeforeonDestroy

@Override
public void onDestroy() 
{
    SharedPreferences preferences = getPreferences(MODE_PRIVATE);
    SharedPreferences.Editor editor = preferences.edit();
    editor.putBoolean("RanBefore", false);
    editor.commit();
}
于 2013-04-17T18:03:12.497 回答
0

我已经使用SharedPreferences. 我所做的是在 Splash 我输入了一些值SP,并在MainActivity我检查了,如果值匹配显示活动,否则不要打开对话框。而且keyCodeBack(),我已经清除了SP,这有助于我满足我的要求。

于 2013-04-24T19:05:30.473 回答
0

使用共享首选项..

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

于 2013-08-28T06:07:48.750 回答