0

我正在开发一个可以由其他手机通过 SMS 控制的 android 应用程序。我PreferenceScreen用作布局(应用程序的设置部分)。布局更新时onResume()

当命令(SMS)通过其他手机发送时,后台运行的服务会窥探传入的短信并更改保存在 SharedPreferences 中的设置。为了看到这些变化,我的 Activity 需要执行中的代码onResume. 如果我回到以前的活动并回来,我可以看到变化。

我希望通过运行服务更改 SharedPreferences 后立即显示更改。我应该怎么做才能让它发生?

4

1 回答 1

1

像这样的东西:

public class MyActivity extends Activity implements OnSharedPreferenceChangeListener
{
    public static final String PREFS_NAME = "MyPrefsFile";

    @Override
    protected void onCreate(Bundle state)
    {
      /* get shared preferences */
      SharedPreferences mySharedPreferences = getSharedPreferences(PREFS_NAME, 0);

      /* register listener for changes to the values within the shared preferences */
      mySharedPreferences.registerOnSharedPreferenceChangeListener(this);
    }

    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key)
    {
      /* perform application processing */
      ...

      /* update layout */
      View myView = findViewById(id.my_view);

      /* invalidate the view causing it to be redrawn */
      myView.invalidate();
    }
}
于 2012-04-14T00:58:02.660 回答