当应用程序启动时,使活动仅出现一次

Rak*_*ari 6 android sharedpreferences

我有以下类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();
          }
}
Run Code Online (Sandbox Code Playgroud)

我希望此活动仅在首次在移动设备上首次安装应用时加载一次.作为Android的新手,我对此一无所知.我读到了SharedPreferences要使用的地方,但是不了解实施情况.关于这项活动的事情是,活动必须作为Launcher第一次使用时,这才是真正让我困惑的事情.因为在清单文件中我宣布另一个活动,在我的情况下将是MainPage.java.那我怎么能实现这个逻辑?难道我呼吁SplashActivityMainPage还是有别的东西,必须做的?请帮助别人?

有人可以写下代码来实现这个逻辑吗?

Ale*_*Bcn 23

将此代码添加到onCreate方法中

    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();
    }
Run Code Online (Sandbox Code Playgroud)

每次执行应用程序时都会保留SharedPreferences,除非您清除Android上的"设置"中的数据.第一次是从这样的首选项(ActivityPREF)上保存的布尔值(activity_executed)中获取值.

如果它没有找到任何值,它将返回false,因此我们必须编辑首选项并将值设置为true.下一次执行将启动该活动TutorialOne.

finish() 从堆栈历史中删除当前活动,因此不能使用TutorialOne中的按钮返回.

关于你的清单,你可以设置这个actitiy

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

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter> 
Run Code Online (Sandbox Code Playgroud)

每次执行应用程序都会启动此活动,但由于真正设置的"activity_executed"将开始一个新的活动startActivity.

  • 在SO上,代码只有答案通常不受欢迎.请尝试解释它的作用以及它的工作原理,以便OP和其他人可以从中学习 (3认同)