如何测量自Android应用程序触发特定事件以来经过的时间?

时间:2017-08-23 08:57:13

标签: android

我有一个应用程序,用户每天都可以获得一项任务,因此即使用户关闭了手机,最好的方法是跟踪一天中的时间,包括任何系统条件。

我发现了使用SystemClock.elapsedRealTime()的建议,但它没有包含手机被关闭......所以其他任何建议?

2 个答案:

答案 0 :(得分:1)

尝试保存(例如SharedPreferences)获取任务的时间。那么当你想要从这个时间到现在这段时间你可以做这样的事情:

long milliSecondsTriggering -> the milliseconds of the time of triggering the event;
long milliSecondsCurrentTime -> current time in milliseconds;
long periodSeconds = (milliSecondsCurrentTime - milliSecondsTriggering ) / 1000;
long elapsedDays = periodSeconds / 60 / 60 / 24;

答案 1 :(得分:0)

尝试此方法一次:

通过传递您的长时间值来调用此方法

public static String getDateDifferenceInDays(long timeInMillis) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd MM yyyy");
        SimpleDateFormat simpleDateFormatParse = new SimpleDateFormat("dd MM yyyy");
        Date serverDate = new Date(timeInMillis * 1000L);
        Date localDate = new Date();
        String strDay = "";
        try {
            Date dateServer = simpleDateFormatParse.parse(simpleDateFormat.format(serverDate));
            Date dateLocal = simpleDateFormatParse.parse(simpleDateFormat.format(localDate));
            long diff = dateServer.getTime() - dateLocal.getTime();
            //Log.d(TAG, "server date-----" + dateServer + "-----local date----" + dateLocal);
            long days = diff / (24 * 60 * 60 * 1000);
            //long days = TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS);

            if (days >= 0) {
                strDay = "Days left - " + days;
            } else {
                strDay = "Time elapsed";
            }
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return strDay;