私のアプリケーションには次のアプリケーションクラスがあります。アプリケーションが起動すると、設定からいくつかの設定を取得し、バックグラウンドサービスを開始したいと考えています。アプリケーション作成時とリソース読み込み時の競合状態ですか?
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とロードされるリソースの間にある種の競合状態が存在すると仮定しなければなりません。
この場合、アプリケーション作成時にリソースを読み込まないことをお勧めしますか?
もしそうなら、アプリケーションの起動時にサービスを初期化する場所がありますか?いいえ再コンパイルなし再インストールなど - - 同じ APKファイルが場合
あなたのアプリケーションの主な 'Activity'の' Service'をいつでも初期化することができます。これは 'Application'をサブクラス化する必要性を避けます。 –