アプリケーションクラスからいくつかのデータを取得して変更する必要がある BroadcastReceiver があります。このデータは、一部のアクティビティでも取得および変更されます。
私はこの投稿を読みました:
getApplication() と getApplicationContext() の比較
そして、それが言うように、getApplication は常に getApplicationContext と同じオブジェクトを返すとは限りません。私の場合、getApplicationContext を使用して BroadcastReceiver に整数を設定し、(getApplication を使用して) アクティビティでその値を確認すると、常に 0 (デフォルト値) になります。
両方の場所で getApplicationContext を使用しようとしましたが、返されるオブジェクトは同じではありません。getApplication を使用してアクティビティで取得するのと同じオブジェクトを BroadcastReceiver で取得する方法はありますか? 代わりに SharedPreferences を使用する必要がありますか?
次に例を示します。
ブロードキャストレシーバー:
MyApp app = (MyApp)context.getApplicationContext();
app.setNumPA(10);
アクティビティ:
MyApp app = (MyApp) getApplication();
Log.d("MyActivity", "Num PA: "+app.getNumPA());
私のアクティビティでは、ログに常に「Num PA: 0」と表示されます。