Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:每天递减一个变量_Android_Variables_Sharedpreferences - Fatal编程技术网

Android:每天递减一个变量

Android:每天递减一个变量,android,variables,sharedpreferences,Android,Variables,Sharedpreferences,Heyyy,我知道如何在SharedReferences中保存变量和其他数据,但我想知道如何每天减少一个变量 这个var(int)已经在共享的首选项中,并且每天我们递减-1 例如,知道用户不一定每天都打开应用程序,我怎么能减少呢 祝您愉快:)当应用程序打开时,保存原始日期检查当前日期,您知道变量应该是什么:)您有几个选择: 每次应用程序启动时,从共享首选项加载值,并按已过的天数递减 编写一个每天递减值的服务 编写一个BroadcastReceiver,当日期更改时开始 我认为使用JobSched

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

这个var(int)已经在共享的首选项中,并且每天我们递减-1

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


祝您愉快:)

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

您有几个选择:

  • 每次应用程序启动时,从共享首选项加载值,并按已过的天数递减

  • 编写一个每天递减值的服务

  • 编写一个
    BroadcastReceiver
    ,当日期更改时开始


  • 我认为使用
    JobScheduler
    将是一种很好的实现方法。它可从API 21获得,允许应用程序在某些情况下执行操作,即使它未打开。这是一份官方文件,也是一份不错的教程。

    如果你想每天减少变量,那么

  • 实现一个BroadcastReceiver,并在AndroidManifest.xml中声明,操作android.intent.action.DATE\u已更改。这将在日期更改时每天运行一次BroadcastReceiver

  • onReceive()方法中,您可以将代码(验证)和结果持久化到SharedPrefs

  • 注意: 1.这项服务将产生巨大的运行成本。 2.Activity将在每次打开时运行相同的代码,但BroadCast将以干净、独立的方式每天运行一次


    您可能需要一个广播操作
    BOOT\u COMPLETED
    就好像设备已打开(重新启动)。

    为什么不将初始日期保存到
    SharedReferences
    ,然后计算从那以后您需要多少天?是的,这是一个很好的解决方案,但如果用户一天没有运行应用程序,应用程序将不会减少:(谢谢大家的回复和时间,你太棒了!!