Создание активности появляется только один раз, когда приложение запускается

У меня есть следующий класс: 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(); } } 

Я хочу, чтобы эта активность загружалась только один раз, когда приложение впервые установлено на мобильном устройстве в первый раз. Будучи новичком в андроиде, я мало что знаю об этом. Я читал в местах, что SharedPreferences должен использоваться, но не понял реализацию. И дело в этой деятельности состоит в том, что деятельность должна действовать как Launcher при первом использовании, вот что меня действительно смутило. Потому что в файле манифеста я объявляю другое действие, которое в моем случае было бы MainPage.java . Итак, как я могу реализовать эту логику? Я призываю SplashActivity в MainPage или есть что-то еще, что нужно сделать? Помогите кому-нибудь?

Может кто-нибудь, пожалуйста, запишите код для реализации этой логики, если это возможно?

Добавьте этот код в свой метод 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(); } 

SharedPreferences будет храниться каждый раз при выполнении приложения, если вы не очистите данные из настроек на вашем Android. В первый раз вы получите значение из логического (activity_executed), сохраненного в таких предпочтениях (ActivityPREF).

Если он не найдет значения, он вернет false, поэтому нам нужно отредактировать предпочтение и установить значение true. Следующее выполнение запустит действие TutorialOne .

finish() удаляет текущую активность из истории стека, поэтому вернуться с помощью кнопки обратно из TutorialOne невозможно.

О вашем манифестах вы можете установить этот actitiy с помощью

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

Каждый раз, когда приложение выполняется, будет запущено это действие, но из-за истинного значения, установленного на "activity_executed" вы начнете новое действие с помощью startActivity .

  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(); } 

Я думаю, это должно быть так.