在Android中处理偏好数据

时间:2014-03-10 03:53:36

标签: android preferenceactivity

我倾向于在后端以毫秒为单位设置HTTP超时。但是当用户编辑它时,我希望他们能够以分钟为单位指定数字。

我看过这个(SharedPreferences.onSharedPreferenceChangeListener not being called consistently),看起来可以添加一个监听器来查看优先级值何时发生变化。所以我可以将分钟转换回毫秒。

但是,当偏好活动加载时,我怎样才能将毫秒转换为分钟,以便当用户进行编辑时,他们会看到分钟值?

1 个答案:

答案 0 :(得分:0)

您好,因为您需要将毫秒转换为分钟和第二组合,因此为此您可以使用以下代码段

long minutes = TimeUnit.MILLISECONDS.toMinutes(millis);
long seconds = TimeUnit.MILLISECONDS.toSeconds(millis);

或者如果你想使用通用方式而不是

seconds = (millis/ 1000) % 60;
minutes = (millis/ (1000 * 60)) % 60;
hours = (millis/ (1000 * 60 * 60)) % 24;

note millis表示毫秒

并以分辨方式将分钟转换为毫秒

long t = (min * 60L) + sec;

long result = TimeUnit.SECONDS.toMillis(t);
如果您想检测是否对首选项进行了更改,请单击

<=>

您需要注册您的监听器,而不是在onResume中注册,并在onPause中取消注册,如下所示

@Override
protected void onCreate(Bundle savedInstanceState) {
    //...
    prefs = PreferenceManager.getDefaultSharedPreferences(this);
}

@Override
protected void onResume() {
    super.onResume();
    prefs.registerOnSharedPreferenceChangeListener(this);
}

@Override
protected void onPause() {      
    super.onPause();
    prefs.unregisterOnSharedPreferenceChangeListener(this);
}

请访问

http://androidpartaker.wordpress.com/2012/02/05/change-preference-summary/

preference activity listener in android

http://developer.android.com/reference/android/preference/Preference.OnPreferenceChangeListener.html