强制活动重新加载(如方向一)

时间:2013-03-11 13:24:50

标签: android broadcastreceiver sharedpreferences

我的活动有onReceive(电池广播)和服务,可以将数据插入共享偏好设置。然后从活动我得到那些数据。我的问题是,当我改变手机的方向时,数据才会刷新。如果我不这样做,Activity会显示旧的共享首选项数据。任何帮助将不胜感激。

我想知道的是:

  • 如何使用Broadscast onReceive方法更新我的活动。
  • 为什么没有正确表示SharedPreferences?

3 个答案:

答案 0 :(得分:1)

两个想法:

1)当您在服务中修改共享偏好设置时,请务必致电apply()commit()以实际更新您的共享偏好设置。

2)在您的活动中,请确保通过registerSharedPreferenceListener注册共享偏好设备侦听器,以便了解您的活动中的偏好设置何时更新。

答案 1 :(得分:1)

旋转手机时,会重新创建活动。您可以通过以下方式再次完成并开始您的活动:

finish();
startActivity(getIntent());

我不知道这是否是您案例的最佳选择,但我使用此功能使用webservices刷新我的活动并且它正常运行!

答案 2 :(得分:1)

要做到这一点,我只需手动重启活动......这是我使用过的方法

public void reload() {

    Intent intent = getIntent();
    overridePendingTransition(0, 0);
    intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
    finish();

    overridePendingTransition(0, 0);
    startActivity(intent);
}

使用此方法,由于转换,将不会有动画。