我有一个活动,我只想在第一次运行应用程序时运行。
永远不会再来。这是一个facebook登录活动。我只想在应用程序最初首次打开时启动一次。
我该怎么做?
答案 0 :(得分:54)
我通常做的是在Main Activity
中添加对特定共享首选项的检查:如果缺少该共享首选项,则启动单次运行Activity,否则继续主活动。当您启动单次运行时,创建共享首选项,以便下次跳过它。
编辑:在onResume
的默认活动中,我执行此操作:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
boolean previouslyStarted = prefs.getBoolean(getString(R.string.pref_previously_started), false);
if(!previouslyStarted) {
SharedPreferences.Editor edit = prefs.edit();
edit.putBoolean(getString(R.string.pref_previously_started), Boolean.TRUE);
edit.commit();
showHelp();
}
基本上我加载默认的共享首选项并查找previously_started
布尔首选项。如果尚未设置,我将其设置,然后启动帮助文件。我使用它在第一次安装应用程序时自动显示帮助。
答案 1 :(得分:14)
在onCreate语句中发布以下代码
Boolean isFirstRun = getSharedPreferences("PREFERENCE", MODE_PRIVATE)
.getBoolean("isFirstRun", true);
if (isFirstRun) {
//show start activity
startActivity(new Intent(MainActivity.this, FirstLaunch.class));
Toast.makeText(MainActivity.this, "First Run", Toast.LENGTH_LONG)
.show();
}
getSharedPreferences("PREFERENCE", MODE_PRIVATE).edit()
.putBoolean("isFirstRun", false).commit();
将 FirstLaunch.class 替换为您要启动的课程
答案 2 :(得分:12)
这样的事情可能有用。
public class MyPreferences {
private static final String MY_PREFERENCES = "my_preferences";
public static boolean isFirst(Context context){
final SharedPreferences reader = context.getSharedPreferences(MY_PREFERENCES, Context.MODE_PRIVATE);
final boolean first = reader.getBoolean("is_first", true);
if(first){
final SharedPreferences.Editor editor = reader.edit();
editor.putBoolean("is_first", false);
editor.commit();
}
return first;
}
}
使用
boolean isFirstTime = MyPreferences.isFirst(MyActivity.this);
答案 3 :(得分:4)
SharedPreferences dataSave = getSharedPreferences("firstLog", 0);
if(dataSave.getString("firstTime", "").toString().equals("no")){ // first run is happened
}
else{ // this is the first run of application
SharedPreferences.Editor editor = dataSave.edit();
editor.putString("firstTime", "no");
editor.commit();
}
答案 4 :(得分:1)
我没有共享Prefrence就这样做了...因为我知道共享prefrence消耗了一些内存所以我在全局类中使用了公共静态布尔变量....首先我创建了Global Class Appconfig ...然后我做了boolean static像这样的变量:
public class Appconfig {
public static boolean activity = false;
}
然后我将这个公共静态布尔变量用于我的欢迎Activity类。我正在使用许可协议页面。我必须在我的应用程序中只使用一次,然后在运行应用程序时不再显示。所以我把条件放在欢迎活动中...如果欢迎类第一次运行所以静态布尔变量是假的......
if (Appconfig.activity == false) {
Intent intent = new Intent();
intent.setClass(WelcomeActivity.this,LicesnceActivity.class);
startActivity(intent);
WelcomeActivity.this.finish();
}
if (Appconfig.activity == true) {
Intent intent = new Intent();
intent.setClass(WelcomeActivity.this, MainActivity.class);
startActivity(intent);
}
现在在Licesnce Activity课上我做了:
Appconfig.activity=true;
因此,每当我运行应用程序时,第二个活动“主要活动”在欢迎活动而非许可活动....
之后运行答案 5 :(得分:0)
在全球范围内声明
public int count=0
int tempInt = 0;
首先通过此代码在你的onCreate函数中。
count = readSharedPreferenceInt("cntSP","cntKey");
if(count==0){
Intent intent = new Intent();
intent.setClass(MainActivity.this, TemporaryActivity.class);
startActivity(intent);
count++;
writeSharedPreference(count,"cntSP","cntKey");
}
在onCreate
之外过去这两个方法 //Read from Shared Preferance
public int readSharedPreferenceInt(String spName,String key){
SharedPreferences sharedPreferences = getSharedPreferences(spName,Context.MODE_PRIVATE);
return tempInt = sharedPreferences.getInt(key, 0);
}
//write shared preferences in integer
public void writeSharedPreference(int ammount,String spName,String key ){
SharedPreferences sharedPreferences = getSharedPreferences(spName, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt(key, ammount);
editor.commit();
}
答案 6 :(得分:0)
全球宣布
public int count=0;
int tempInt = 0;
First Screen OnCreate
count = readSharedPreferenceInt("cntSP","cntKey");
if(count==0){
Intent i = new Intent(SplashScreen.this, IntroActivity.class);
startActivity(i);
count++;
writeSharedPreference(count,"cntSP","cntKey");
}
else {
Intent i = new Intent(SplashScreen.this, MainActivity.class);
startActivity(i);
// close this activity
}
现在在Oncreat方法之外
public int readSharedPreferenceInt(String spName,String key){
SharedPreferences sharedPreferences = getSharedPreferences(spName, Context.MODE_PRIVATE);
return tempInt = sharedPreferences.getInt(key, 0);
}
//write shared preferences in integer
public void writeSharedPreference(int ammount,String spName,String key ){
SharedPreferences sharedPreferences = getSharedPreferences(spName, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt(key, ammount);
editor.commit();
}
答案 7 :(得分:0)
这是我的代码,首次启用OnBoarding活动。如果不是第一次,请直接转到“家庭活动”。
private void checkFirstOpen(){
Boolean isFirstRun = getSharedPreferences("PREFERENCE", MODE_PRIVATE)
.getBoolean("isFirstRun", true);
if (!isFirstRun) {
Intent intent = new Intent(OnBoardingScreen.this, Home.class);
startActivity(intent);
finish();
}
getSharedPreferences("PREFERENCE", MODE_PRIVATE).edit().putBoolean("isFirstRun",
false).apply();
}
答案 8 :(得分:0)
只需将此代码添加到onCreate中即可。...
//第一次检查
SharedPreferences sharedPreferences = getSharedPreferences("PREFERENCE", MODE_PRIVATE);
String firstTime = sharedPreferences.getString("FirstTimeInstall", "");
if (firstTime.equals("Yes")) {
Intent intent = new Intent(getApplicationContext(), HomeActivity.class);
startActivity(intent);
} else {
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("FirstTimeInstall", "Yes");
editor.apply();
}
//First Time Check end