Ответ 1
Прежде всего вы можете использовать SQLiteOpenHelper. Это предпочтительный способ делать вещи с базой данных. Этот класс имеет метод onCreate(SQLiteDatabase)
, вызываемый при первом создании базы данных. Я думаю, что это вам подходит.
Если вам нужна большая гибкость, и ваша первая логика времени не привязана только к базе данных, вы можете использовать образец, предоставленный ранее. Вам просто нужно поместить его в место запуска.
Есть два стартовых места. Если у вас только одно действие, вы можете поместить свой код в метод 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();
}
}
Не забудьте поставить объявление активности в манифесте, а также aimfilters (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>