SharedPreferences кажется мне некрасивым решением.Гораздо удобнее, когда вы используете конструктор приложения для таких целей.
Все, что вам нужно, это использовать свой собственный класс Application, а не класс по умолчанию.
public class MyApp extends Application {
public MyApp() {
// this method fires only once per application start.
// getApplicationContext returns null here
Log.i("main", "Constructor fired");
}
@Override
public void onCreate() {
super.onCreate();
// this method fires once as well as constructor
// but also application has context here
Log.i("main", "onCreate fired");
}
}
Тогда вы должны зарегистрировать этот класс каккласс вашего приложения внутри AndroidManifest.xml
<application android:label="@string/app_name" android:name=".MyApp"> <------- here
<activity android:name="MyActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
Вы даже можете нажать кнопку «Назад», чтобы приложение перешло в фоновый режим, и не будет тратить ресурсы процессора, только ресурсы памяти, а затем вы сможете запустить его снова и конструкторвсе еще не огонь, так как заявка еще не была завершена.
Вы можете очистить память в диспетчере задач, чтобы все приложения были закрыты, а затем повторно запустили ваше приложение, чтобы убедиться, что ваш код инициализации снова запускается.