[英]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.