Java 如何自动更新SharedReferences变量?
假设我有一个名为floatValue的SharedReferences浮点值。当设备检测到新的一天时,如何将floatValue自动设置为0?比如今天是2/1/17,floatValue的值是1250.23。是否可以将其重置为0,并且我的textView将显示0,这样当用户第二天早上醒来时,他会注意到textView的文本为0 我为这些凹痕感到抱歉。基本上,我将newTodayFloatValue初始化为0,因为我需要将今天的值添加到newTodayFloatValue中。然后我将这个值保存到SharedReferences中!但我希望这可以在日期改变后重新设置Java 如何自动更新SharedReferences变量?,java,android,Java,Android,假设我有一个名为floatValue的SharedReferences浮点值。当设备检测到新的一天时,如何将floatValue自动设置为0?比如今天是2/1/17,floatValue的值是1250.23。是否可以将其重置为0,并且我的textView将显示0,这样当用户第二天早上醒来时,他会注意到textView的文本为0 我为这些凹痕感到抱歉。基本上,我将newTodayFloatValue初始化为0,因为我需要将今天的值添加到newTodayFloatValue中。然后我将这个值保存到S
float newTodayFloatValue = 0;
tvTodayFloatValue = (TextView)findViewById(R.id.todayfloatValueTextView);
Intent intent1 = getIntent();
float todayValueToBeAdded = intent1.getFloatExtra("strValueToBeAdded", 0.0f);
final SharedPreferences totalTodayfloatValue = getSharedPreferences("totalTodayfloatValue", 0);
newTodayFloatValue = totalTodayfloatValue.getFloat("totalTodayfloatValue", 0);
newTodayFloatValue = newTodayFloatValue + todayValueToBeAdded;
SharedPreferences.Editor editor = totalTodayfloatValue.edit();
editor.putFloat("totalTodayfloatValue", newTodayFloatValue);
editor.commit();
tvTodayFloatValue.setText(String.valueOf(newTodayFloatValue));
有Android“广播”用于此类事件,如时间更改(动作时间更改)或日期更改(动作日期更改)
行动)
进一步阅读,请参阅相应的。您还可以找到如何处理广播的信息。对于此类事件,有Android“广播”,如时间更改(动作时间更改)或日期更改(动作日期更改)
行动)
进一步阅读,请参阅相应的。您还可以找到如何处理广播的信息。您可以使用带有操作的广播接收器 “android.intent.action.DATE\u已更改” 无论何时自动更改日期(因为日期实际已更改)或由用户显式更改日期,都将触发该事件 要在应用程序未运行的情况下接收此广播,您需要使用所述的意图过滤器在清单中声明它
<receiver
android:name=".DateChangeReceiver"
android:exported="false">
<intent-filter>
<action android:name="android.intent.action.DATE_CHANGED" />
</intent-filter>
</receiver>
您可以使用带有动作的广播接收器 “android.intent.action.DATE\u已更改” 无论何时自动更改日期(因为日期实际已更改)或由用户显式更改日期,都将触发该事件 要在应用程序未运行的情况下接收此广播,您需要使用所述的意图过滤器在清单中声明它
<receiver
android:name=".DateChangeReceiver"
android:exported="false">
<intent-filter>
<action android:name="android.intent.action.DATE_CHANGED" />
</intent-filter>
</receiver>
我认为有更简单的方法来达到这个效果。我将编写一个方法
getFloatValue(…)
,和setFloatValue
,在方法setFloatValue
中,您不仅应该更新SharedPreferences
中的floatValue
而且还应该更新floatValueLastModification
然后在getFloatValue
中,您应该将floatValueLastModification
与当前时间进行比较,如果是前一天,则返回0
当然,既然您是这样做的,那么您应该只通过这些方法访问这个floatValue
我认为阅读和理解这样的代码会容易得多。我认为有更简单的方法来实现这种效果。我将编写一个方法
getFloatValue(…)
,和setFloatValue
,在方法setFloatValue
中,您不仅应该更新SharedPreferences
中的floatValue
而且还应该更新floatValueLastModification
然后在getFloatValue
中,您应该将floatValueLastModification
与当前时间进行比较,如果是前一天,则返回0
当然,既然您是这样做的,那么您应该只通过这些方法访问这个floatValue
我认为阅读和理解这些代码会容易得多。您是否为此使用服务?不!我在技术上被卡住了,因为我不知道这种情况下的方法是什么!你有什么活动代码,我可以把它们放在那里给你看吗?已经添加了代码!你在用服务吗?不!我在技术上被卡住了,因为我不知道这种情况下的方法是什么!你有什么活动代码,我可以把它们放在那里给你看吗?已经添加了代码!不知怎么的,这对我来说不太合适!我理解您的代码和代码背后的逻辑,但我的textview一直显示前一天的浮点值。现在应该怎么做?你能发布你当前的代码吗?清单、接收者和您阅读共享参考的活动/片段/类?非常感谢!你的评论让我真的去重新查看清单,结果是,正是意图过滤器代码的位置让我的应用程序无法工作!现在问题解决了!很酷,很高兴我能帮上忙。不知怎么的,这对我来说不太合适!我理解您的代码和代码背后的逻辑,但我的textview一直显示前一天的浮点值。现在应该怎么做?你能发布你当前的代码吗?清单、接收者和您阅读共享参考的活动/片段/类?非常感谢!你的评论让我真的去重新查看清单,结果是,正是意图过滤器代码的位置让我的应用程序无法工作!现在问题解决了!很酷,很高兴我能帮上忙。