0

から設定にアクセスできませんBroadcastReceiver。私は次のコードを使用しています:

public class MyReceiver extends BroadcastReceiver
{
    private static final String TAG = MyReceiver.class.getSimpleName();

    @Override
    public void onReceive(Context context, Intent intent)
    {
        SharedPreferences sharedPreferences = 
            PreferenceManager.getDefaultSharedPreferences(
                context.getApplicationContext());
        Log.d(TAG, sharedPreferences.getAll().toString());
    }
}

このコードは常に古い設定を出力します。PreferenceActivity に移動し、設定を変更してから、上記をトリガーするイベントを発生させるBroadcastReceiverと、常に設定の古い値が出力されます。

また、同じコードをメイン アクティビティに追加すると、常に正しい設定が出力されます。

ここで何が起こっているのですか?設定はキャッシュされていますか? から強制的にリロードする方法はありBroadcastReceiverますか?

4

1 に答える 1

0

私の問題はBroadcastReceiverのSharedPreferencesで説明されているようですが、更新されていないようです。

私のBroadcastReceiverはService、次のようなものから開始されます。

<service android:name=".MyService" android:process=":remote">
  <intent-filter>
    <action android:name="com.example.MyService"/>
  </intent-filter>
</service>

私の問題を取り除くことandroid:process=":remote"で問題は解決しました。これが私のアプリケーションにとって正しいことかどうかはわかりませんが。このサービスは起動時に開始する必要があるため、メインアプリから切り離されていることに依存しています。

于 2012-08-27T02:54:46.173 に答える