第一次打开应用时,如何仅启动一次活动?

时间:2011-08-30 03:59:37

标签: android

我有一个活动,我只想在第一次运行应用程序时运行。

永远不会再来。这是一个facebook登录活动。我只想在应用程序最初首次打开时启动一次。

我该怎么做?

9 个答案:

答案 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