Making an activity appear only once, when the app is started

孤街醉人 提交于 2019-12-17 19:44:44

问题


I have the following class, SplashActivity.java:

public class SplashScreen extends Activity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

        setContentView(R.layout.splash);
        Thread timer = new Thread(){
            public void run(){
                try{
                    sleep(5000);
                }catch(InterruptedException e)
                {
                    e.printStackTrace();
                }
                finally{
                    Intent tutorial = new Intent(SplashScreen.this, TutorialOne.class);
                    startActivity(tutorial);
                }

            }
        };
        timer.start();
          }
}

I want this activity to load only once, when the app is first installed on the mobile device for the first time. Being new to android I have very little idea about this. I read in places that the SharedPreferences is to be used, but did not understand the implementation. And the thing about this activity is that, the activity has to act as a Launcher when used for the first time, that's what really confused me. Because in the manifest file I am declaring another activity which in my case would be the MainPage.java. So how can I implement this logic ?? Do I call upon the SplashActivity in the MainPage or is there something else that must be done ?? Please help someone ?

Can someone please write down the code to implement this logic if possible?


回答1:


Add this code to your onCreate method

    SharedPreferences pref = getSharedPreferences("ActivityPREF", Context.MODE_PRIVATE);
    if(pref.getBoolean("activity_executed", false)){
        Intent intent = new Intent(this, TutorialOne.class);
        startActivity(intent);
        finish();
    } else {
        Editor ed = pref.edit();
        ed.putBoolean("activity_executed", true);
        ed.commit();
    }

SharedPreferences will be keep every time you execute the app unless you clean the data from Settings on your Android. The first time is going to get the value from a boolean (activity_executed) saved on such preferences (ActivityPREF).

If it does not find any value it will return false, so we have to edit the preference and set the value to true. The next execution will launch the activity TutorialOne.

finish() erases the current activity from the stack history, so no come back is possible using button back from TutorialOne.

About your manifest, you can set this actitiy with

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter> 

Every time the app is executed will launch this activity, but due to the true setted on the "activity_executed" is going to start a new activity with startActivity.




回答2:


 SharedPreferences pref = getSharedPreferences("ActivityPREF",    Context.MODE_PRIVATE);
     if(pref.getBoolean("activity_executed", false)){

} else { 
   Intent intent = new Intent(this, TutorialOne.class);
    startActivity(intent);
    finish();
    Editor ed = pref.edit();
    ed.putBoolean("activity_executed", true);
    ed.commit();
} 

I think it should be like this.



来源:https://stackoverflow.com/questions/16419627/making-an-activity-appear-only-once-when-the-app-is-started

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!