Heyyy,我知道如何在SharedPreferences中保存变量和其他数据,但我想知道如何每天减少一个变量。
此var(int)已经在共享首选项中,并且每天我们减少-1。
如果用户不一定每天都打开应用程序,我怎么能减少呢?
祝你有个美好的一天:)
答案 0 :(得分:1)
保存原始日期,当应用程序打开时检查当前日期并且您知道您的变量应该是什么:)
答案 1 :(得分:1)
如果你想在Daily Basis上减少变量,那么
实施 BroadcastReceiver 并使用 android.intent.action.DATE_CHANGED 操作在 AndroidManifest.xml 中声明它。这将在日期更改的一天内运行BroadcastReceiver。
在 onReceive()方法中,您可以将代码(验证)和结果保存到 SharedPrefs 。
注意:强> 1.服务会产生巨大的运营成本。 2. Activity每次打开时都会运行相同的代码,但BroadCast每天都会以干净独立的方式运行它。
您可能需要广播操作BOOT_COMPLETED
,就像设备已开启(重启)一样。
答案 2 :(得分:0)
您有多种选择:
每次您的应用启动时,都会从共享首选项中加载该值,并将其减去已经过的天数。
编写一项每天递减值的服务。
写一个public class GenericObject
{
private object value;
public T GetValue<T>()
{
return (T)value;
}
public void SetValue<T>(T value)
{
this.value = value;
}
public GenericObject WithValue<T>(T value)
{
this.value = value;
return this;
}
}
class Program
{
static void Main(string[] args)
{
Dictionary<string, GenericObject> dict = new Dictionary<string, GenericObject>();
dict["mystring"] = new GenericObject().WithValue<string>("Hello World");
dict["myint"] = new GenericObject().WithValue<int>(1);
int i = dict["myint"].GetValue<int>();
string s = dict["mystring"].GetValue<string>();
}
}
,它会在日期更改时开始。
答案 3 :(得分:0)