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

Я хочу запустить кусок кода только один раз в своем приложении и когда я запускаю его в первый раз (недавно установленное приложение). Как я могу это сделать, может кто-нибудь объяснить, чтобы дать часть кода.

На самом деле, в моем проекте Android я хочу создать базу данных и вставить некоторые значения только в первый запуск. После этого этот фрагмент кода не должен запускаться снова. Как я могу достичь этого механизма с помощью SharedPreferences или Preferences .

Пример кода будет более полезным.

Прежде всего вы можете использовать SQLiteOpenHelper . Это предпочтительный способ делать вещи с базой данных. Этот класс имеет onCreate(SQLiteDatabase) , который onCreate(SQLiteDatabase) при первом создании базы данных. Я думаю, это вам подходит.

Если вы хотите больше гибкости, и ваша первая логика времени не привязана только к базе данных, вы можете использовать образец, предоставленный ранее. Вам просто нужно положить его в место запуска.

Есть 2 стартовых места. Если у вас только одно действие, вы можете поместить свой код в метод onCreate , поэтому он будет выглядеть следующим образом:

 public void onCreate(Bundle savedInstanceState) { // don't forget to call super method. super.onCreate(savedInstanceState); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); if (!prefs.getBoolean("firstTime", false)) { // <---- run your one time code here databaseSetup(); // mark first time has runned. SharedPreferences.Editor editor = prefs.edit(); editor.putBoolean("firstTime", true); editor.commit(); } } 

Не забудьте указать декларацию активности в манифесте , а также ее намерения (action = MAIN , category = LAUNCHER ).

Если у вас более одного действия, и вы не хотите дублировать свою логику запуска, вы можете просто поместить свою логику инициализации в экземпляр приложения, которая создается перед всеми действиями (и другими компонентами, такими как службы, широковещательные приемники, контент-провайдеры) ,

Просто создайте класс следующим образом:

 public class App extends Application { @Override public void onCreate() { super.onCreate(); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); if (!prefs.getBoolean("firstTime", false)) { // <---- run your one time code here databaseSetup(); // mark first time has runned. SharedPreferences.Editor editor = prefs.edit(); editor.putBoolean("firstTime", true); editor.commit(); } } 

Все, что вам нужно для работы, помещено в тег application в AndroidManifest.xml атрибут android: name = ". App".

 <!-- other xml stuff --> <application ... android:name=".App"> <!-- yet another stuff like nextline --> <activity ... /> </application> 

Вы можете попробовать:

 SharedPreferences wmbPreference = PreferenceManager.getDefaultSharedPreferences(this); boolean isFirstRun = wmbPreference.getBoolean("FIRSTRUN", true); if (isFirstRun) { // Code to run once SharedPreferences.Editor editor = wmbPreference.edit(); editor.putBoolean("FIRSTRUN", false); editor.commit(); } 

Напишите это в своем первом действии для создания. Затем после того, как код не будет выполнен снова.

Где бы вы ни запускали этот код в своем приложении:

  1. Проверьте, имеет ли значение boolean firstTime True в общих настройках
  2. Если не

    • Запуск одноразового кода
    • Сохранить firstTime как true в общих настройках

Что-то вроде этого:

 SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); if(!prefs.getBoolean("firstTime", false)) { // run your one time code here SharedPreferences.Editor editor = prefs.edit(); editor.putBoolean("firstTime", true); editor.commit(); } 

Вот что я делаю в таких ситуациях:

  wmbPreference = PreferenceManager.getDefaultSharedPreferences(this); isFirstRun = wmbPreference.getBoolean("FIRSTRUN", true); if (isFirstRun) { // Do your magic here SharedPreferences.Editor editor = wmbPreference.edit(); editor.putBoolean("FIRSTRUN", false); editor.commit(); }else{ //what you do everytime goes here } 

надеюсь это поможет

Intereting Posts
Как предотвратить удаление приложения Android во время развертывания с помощью Xamarin Studio? Ручная установка обновленного АПК завершается неудачей: «Подписи не соответствуют ранее установленной версии», Получение базового аутентификатора google из AccountManager Растровые изображения андроида, рециркуляция и фрагментация кучи Android _Unwind_Backtrace внутри sigaction Mockito: Как использовать getString с mockito? Как сохранить данные в приложении для Android Для платформы отсутствует модуль Cordova – check_reqs. Пропуск Обработка MotionEvent в ScrollView на Android Кинжал 2: @ Компонент.Builder пропускает сеттеры для необходимых модулей или компонентов: ` Есть ли способ написать единичный тест для целевого API Библиотека Intellij 12 maven Android RestTemplate проблема с обработкой javax / xml / parser / DocumentBuilder.class Изменение размера динамического текста в соответствии с таблицей Как завершить несколько действий нажатием кнопки? Как совместить int с перечислением