Android:每天减少一个变量

时间:2016-09-30 20:09:09

标签: android variables sharedpreferences

Heyyy,我知道如何在SharedPreferences中保存变量和其他数据,但我想知道如何每天减少一个变量。

此var(int)已经在共享首选项中,并且每天我们减少-1。

如果用户不一定每天都打开应用程序,我怎么能减少呢?

祝你有个美好的一天:)

4 个答案:

答案 0 :(得分:1)

保存原始日期,当应用程序打开时检查当前日期并且您知道您的变量应该是什么:)

答案 1 :(得分:1)

如果你想在Daily Basis上减少变量,那么

  1. 实施 BroadcastReceiver 并使用 android.intent.action.DATE_CHANGED 操作在 AndroidManifest.xml 中声明它。这将在日期更改的一天内运行BroadcastReceiver。

  2. onReceive()方法中,您可以将代码(验证)和结果保存到 SharedPrefs

  3. 注意:  1.服务会产生巨大的运营成本。  2. Activity每次打开时都会运行相同的代码,但BroadCast每天都会以干净独立的方式运行它。

    您可能需要广播操作BOOT_COMPLETED,就像设备已开启(重启)一样。

答案 2 :(得分:0)

您有多种选择:

  1. 每次您的应用启动时,都会从共享首选项中加载该值,并将其减去已经过的天数。

  2. 编写一项每天递减值的服务。

  3. 写一个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)

我认为使用JobScheduler将是实现这一目标的好方法。它可以从API 21获得,并允许应用程序在某些情况下执行操作,即使它未打开。 Here's官方文档,以及一个很好的教程here