我倾向于在后端以毫秒为单位设置HTTP超时。但是当用户编辑它时,我希望他们能够以分钟为单位指定数字。
我看过这个(SharedPreferences.onSharedPreferenceChangeListener not being called consistently),看起来可以添加一个监听器来查看优先级值何时发生变化。所以我可以将分钟转换回毫秒。
但是,当偏好活动加载时,我怎样才能将毫秒转换为分钟,以便当用户进行编辑时,他们会看到分钟值?
答案 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