Tengo la siguiente clase de aplicación para mi aplicación. Cuando se inicia la aplicación, deseo obtener algunas configuraciones de las preferencias e iniciar un servicio en segundo plano.¿Condición de carrera entre la aplicación onCreate y los recursos cargados?
public class MyApplication extends Application {
public void onCreate() {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
String key = getResources().getString(R.string.prefkey_updateinterval);
...
}
Esto normalmente funciona bien, pero de vez en cuando se inicia mi programa de Eclipse "Ejecutar" me sale este error:
10-10 08:25:47.016: E/AndroidRuntime(26402): Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x7f0a0004
10-10 08:25:47.016: E/AndroidRuntime(26402): at android.content.res.Resources.getText(Resources.java:216)
10-10 08:25:47.016: E/AndroidRuntime(26402): at android.content.res.Resources.getString(Resources.java:269)
10-10 08:25:47.016: E/AndroidRuntime(26402): at com.karwosts.MyApp.PortfolioStore.onCreate(PortfolioStore.java:40)
10-10 08:25:47.016: E/AndroidRuntime(26402): at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:969)
10-10 08:25:47.016: E/AndroidRuntime(26402): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:3395)
Este id es de mi R.java:
public static final int prefkey_updateinterval=0x7f0a0004;
Dado que esto funciona bien la mayor parte del tiempo, tengo que asumir que hay algún tipo de condición de carrera entre onCreate y los recursos que se están cargando.
Si ese es el caso, ¿se recomienda no leer recursos en Application onCreate?
En caso afirmativo, ¿hay un lugar mejor para inicializar un servicio cuando se inicia la aplicación?
Siempre puede inicializar el 'Servicio' en la' Actividad' principal de su aplicación ... esto evita la necesidad de subclasificar 'Aplicación'. –