Android 如何从特定日期开始计时?

Android 如何从特定日期开始计时?,android,chronometer,android-timer,Android,Chronometer,Android Timer,在我的应用程序中,用户从日期和时间选择器(从过去的日期)中选择一个日期和时间,然后我想从该日期启动一个计数计时器,我需要在服务中运行它,这样,如果我的应用程序死机,计时器就不会停止。 我在stackOverFlow上尝试了计时器和一些类似的解决方案,但没有得到任何正确的解决方案 请检查下面的图片,它与我需要的非常相似: 用于获取日期差异(此处,date2可以是用户选择的日期,date1可以是当前日期时间(您可以通过调用:new date())获得): 现在,一旦您获得了差异,您就可以将其用作计数

在我的应用程序中,用户从日期和时间选择器(从过去的日期)中选择一个日期和时间,然后我想从该日期启动一个计数计时器,我需要在服务中运行它,这样,如果我的应用程序死机,计时器就不会停止。 我在stackOverFlow上尝试了计时器和一些类似的解决方案,但没有得到任何正确的解决方案

请检查下面的图片,它与我需要的非常相似:


用于获取日期差异(此处,
date2
可以是用户选择的日期,
date1
可以是当前日期时间(您可以通过调用:
new date()
)获得):


现在,一旦您获得了差异,您就可以将其用作计数计时器,并定义onTick()以每隔
mCountUpInterval
time interval(在CountUpmer类中定义)

更新您的视图,而无需运行某种服务或某些花哨的东西即可实现此功能。只需将所选日期存储在SharedReferences中,然后,当你进入带有计数器的视图时,你可以用选定的日期作为参考来启动计数器。你想在用户打开应用程序后显示此计时器,还是想使用类似主屏幕的小部件?@ShreyGarg我只想在用户打开应用程序时显示计时器。那么,你真的不需要服务来完成此操作,正如@Carnal所建议的,你可以将日期时间保存在共享首选项中,当应用程序打开时-计算时间差并启动计数计时器我的另一个主要问题是如何从用户选择的特定日期创建计数计时器。
public static String getDifferenceBetweenDates(Date date1, Date date2) {
    long secondsInMilli = 1000;
    long minutesInMilli = secondsInMilli * 60;
    long hoursInMilli = minutesInMilli * 60;
    long daysInMilli = hoursInMilli * 24;

    long difference = date2.getTime() - date1.getTime();

    long elapsedDays = difference / daysInMilli;
    difference = difference % daysInMilli;

    long elapsedHours = difference / hoursInMilli;
    difference = difference % hoursInMilli;

    long elapsedMinutes = difference / minutesInMilli;
    difference = difference % minutesInMilli;

    long elapsedSeconds = difference / secondsInMilli;

    return String.format("%s days %s hours %s minutes %s seconds", elapsedDays, elapsedHours, elapsedMinutes, elapsedSeconds);
}