我有我的應用程序的以下應用程序類。當應用程序啓動時,我想從首選項中獲取一些設置並啓動後臺服務。應用程序onCreate和資源加載之間的競爭條件?
public class MyApplication extends Application {
public void onCreate() {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
String key = getResources().getString(R.string.prefkey_updateinterval);
...
}
這通常工作正常,但偶爾也會從月食 「運行」 開始我的計劃時,我得到這個錯誤:
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)
此ID是從我的R.java:
public static final int prefkey_updateinterval=0x7f0a0004;
因爲這工作得很好大部分的時間,我必須假定有某種的onCreate和資源之間的競爭條件加載?
如果是這樣的話,是建議不要在應用程序的onCreate閱讀資源?
如果是這樣,有沒有更好的地方來初始化服務應用程序啓動時?
你總是可以只初始化'Service'在應用程序的主'Activity' ......這避免了需要繼承'Application'。 –