У меня есть следующий класс: 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(); }
Я думаю, это должно быть так.