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 回答