检查Android中的应用程序打开后是否已经过了1小时?

时间:2016-08-17 14:46:12

标签: android time calendar sharedpreferences

我试图检查自用户执行操作后是否已超过一个小时。

目前我将日期/时间存储在sharedpreferences中,然后当用户再次点击活动时,我会检查sharedpref时间和当前时间。例如,如果用户今天上午10点在应用程序中执行某些操作,然后明天凌晨3点返回,我想知道是否已超过一小时。

我从SO那里尝试了一堆没有运气的答案。似乎共享预付时间被保存为日期' 8/17/16'与timeInMili。任何帮助都会很棒。

活动方法:

lastConfigCheck = prefs.getString("LAST_CONFIG_CHECK_DATE", null);



    if (lastConfigCheck == null) {

        lastConfigCheck = String.valueOf(System.currentTimeMillis());

        editor.putString("LAST_CONFIG_CHECK_DATE", lastConfigCheck);
        editor.apply();

        Log.d("hellohours", lastConfigCheck);

    }

    else  {

        long todaysTime = System.currentTimeMillis();

        Long timeElapsed = todaysTime - Long.valueOf(lastConfigCheck);

        if (timeElapsed > 120000) {

            Log.d("hellohours", "boom digity");

        } else {

            Log.d("hellohours", "boom awesome");
        }

    }

当我检查logcat时,它会说明该行

 Long timeElapsed = todaysTime - Long.valueOf(lastConfigCheck);

导致:

"java.lang.NumberFormatException: Invalid long: "8/17/2016"'

1 个答案:

答案 0 :(得分:3)

这个价值:

System.currentTimeMillis()

以Long的形式返回。因此,请尝试在共享首选项中存储该值。

editor.putLong("LAST_CONFIG_CHECK_DATE", System.currentTimeMillis());

参考:Developer Forum

一旦完成,您就不必进行任何转换,数学运算也很容易。