【问题标题】:increase number in sharedpreferences on midnight在午夜增加共享偏好的数量
【发布时间】:2018-09-30 01:55:04
【问题描述】:

我试图在每天午夜将我的共享偏好增加一个,并在用户一天打开应用程序时检索它。但这里有两个问题, 1,数字在增加,但在小时后又开始减少。 2、我希望enter code here每天增加一倍。` 这是我的代码

public class MainActivity extends AppCompatActivity {
    WebView wv;
    int i=1;

    SharedPreferences sp;
    Calendar currentTime = Calendar.getInstance();
    int hour = currentTime.get(Calendar.HOUR_OF_DAY);
    String link = "https://www.google.com/";

    ...

    Button btn;wv=(WebView)findViewById(R.id.wv);
    btn=(Button)findViewById(R.id.btn);
    sp=getSharedPreferences("page",MODE_PRIVATE);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            SharedPreferences.Editor editor=sp.edit();
            editor.putInt("ch",i);
            editor.commit();
        }
    });

    int ret=(sp.getInt("ch",1));

    if(hour==00) {
        ret++;
    }

【问题讨论】:

  • 您是否考虑过将开始日期保存到SharedPreferences,然后在需要时只计算此后的天数?似乎比每天尝试更新SharedPreferences 更简单。
  • 是的,我认为这是最好的方法,而不是每天创建服务。在该设备第一次运行时获取当前日期,并将其存储到 sharedpreference 中,然后在需要时从当前日期中减去相同的日期,以便在您的视图中显示该日期

标签: android


【解决方案1】:

您永远不会更改 i 的值,因此 editor.putInt("ch",i); 将始终在 SharedPreferences 中将其重置为 1。

可能想看看Running task periodicaly(once a day/once a week)

【讨论】:

    【解决方案2】:

    你不能像这样增加共享偏好值,如果你想每天 00:00 增加你的共享偏好值,那么你需要运行一个后台作业调度程序,即使应用程序被杀死并且时钟滴答作响,它也会在后台继续运行00:00 它将值加 1,下次用户打开应用程序时,每次都会找到更新后的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-29
      • 2019-03-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多