Android中的计时器-如何在手机或应用关闭时保持计数
我正在尝试实现一个计时器,它只计算自按下start以来经过的时间。即使应用程序/手机已关闭,我也需要保留此计数器。我如何做到这一点?在应用程序关闭时将当前时间存储在某个位置,然后在应用程序再次打开时检索此数据?如果这是一个很好的方法,我该如何实现这个解决方案?我希望有人能提供一些意见Android中的计时器-如何在手机或应用关闭时保持计数,android,android-handler,Android,Android Handler,我正在尝试实现一个计时器,它只计算自按下start以来经过的时间。即使应用程序/手机已关闭,我也需要保留此计数器。我如何做到这一点?在应用程序关闭时将当前时间存储在某个位置,然后在应用程序再次打开时检索此数据?如果这是一个很好的方法,我该如何实现这个解决方案?我希望有人能提供一些意见 我已经使用Handler实现了我的计时器/计数器(我在StackOverflow的回答中看到了这个解决方案)您应该使用。它利用pendingent向应用程序的组件发送通知,例如发送到BroadcastReceive
我已经使用Handler实现了我的计时器/计数器(我在StackOverflow的回答中看到了这个解决方案)您应该使用。它利用
pendingent
向应用程序的组件发送通知,例如发送到BroadcastReceiver
,您可以在那里处理延迟的作业。您应该使用。它利用pendingent
向应用程序的组件发送通知,例如发送到BroadcastReceiver
,您可以在那里处理延迟的作业。您应该使用。它利用pendingent
向应用程序的组件发送通知,例如发送到BroadcastReceiver
,您可以在那里处理延迟的作业。您应该使用。它利用pendingent
向应用程序的组件发送通知,例如发送到BroadcastReceiver
,在那里您可以处理延迟的作业。如果您真的担心按下“开始”后的时间,您可能需要延迟的实时时间
-系统时钟可以被操纵,但即使是经过的时间也会随着手机重启而重置,所以要小心,但这应该可以满足您的大部分需求
请参阅此帖子:如果您真的担心按下“开始”按钮后的时间,您可能需要
延迟realtime
-系统时钟可以操作,但即使是经过的时间也会随着手机的重新启动而重置,因此请小心,但这应该可以满足您的大部分需要
请参阅此帖子:如果您真的担心按下“开始”按钮后的时间,您可能需要
延迟realtime
-系统时钟可以操作,但即使是经过的时间也会随着手机的重新启动而重置,因此请小心,但这应该可以满足您的大部分需要
请参阅此帖子:如果您真的担心按下“开始”按钮后的时间,您可能需要
延迟realtime
-系统时钟可以操作,但即使是经过的时间也会随着手机的重新启动而重置,因此请小心,但这应该可以满足您的大部分需要
参见本文:这样做的一种方法是在计数器开始时保存系统时间,然后在计数器结束时再次保存时间 您可以比较开始时间和结束时间,以了解经过了多少时间 它可能看起来像这样:
Calendar c = Calendar.getInstance();
int startTime = c.get(Calendar.SECOND);
...
Calendar c = Calendar.getInstance();
int endTime = c.get(Calendar.SECOND);
int secondsElapsed = endTime - startTime;
编辑:此方法的主要缺点是它不考虑时区更改或系统时间更改。如果这两个问题都与你无关,那么它可以正常工作
编辑2:要保存
startTime
,使其在应用程序关闭时不会丢失,请使用SharedReferences
。可以看到使用SharedReferences
存储和检索值的示例。这样做的一种方法是在计数器开始时保存系统时间
,然后在计数器结束时再次保存时间
您可以比较开始时间和结束时间,以了解经过了多少时间
它可能看起来像这样:
Calendar c = Calendar.getInstance();
int startTime = c.get(Calendar.SECOND);
...
Calendar c = Calendar.getInstance();
int endTime = c.get(Calendar.SECOND);
int secondsElapsed = endTime - startTime;
编辑:此方法的主要缺点是它不考虑时区更改或系统时间更改。如果这两个问题都与你无关,那么它可以正常工作
编辑2:要保存startTime
,使其在应用程序关闭时不会丢失,请使用SharedReferences
。可以看到使用SharedReferences
存储和检索值的示例。这样做的一种方法是在计数器开始时保存系统时间
,然后在计数器结束时再次保存时间
您可以比较开始时间和结束时间,以了解经过了多少时间
它可能看起来像这样:
Calendar c = Calendar.getInstance();
int startTime = c.get(Calendar.SECOND);
...
Calendar c = Calendar.getInstance();
int endTime = c.get(Calendar.SECOND);
int secondsElapsed = endTime - startTime;
编辑:此方法的主要缺点是它不考虑时区更改或系统时间更改。如果这两个问题都与你无关,那么它可以正常工作
编辑2:要保存startTime
,使其在应用程序关闭时不会丢失,请使用SharedReferences
。可以看到使用SharedReferences
存储和检索值的示例。这样做的一种方法是在计数器开始时保存系统时间
,然后在计数器结束时再次保存时间
您可以比较开始时间和结束时间,以了解经过了多少时间
它可能看起来像这样:
Calendar c = Calendar.getInstance();
int startTime = c.get(Calendar.SECOND);
...
Calendar c = Calendar.getInstance();
int endTime = c.get(Calendar.SECOND);
int secondsElapsed = endTime - startTime;
编辑:此方法的主要缺点是它不考虑时区更改或系统时间更改。如果这两个问题都与你无关,那么它可以正常工作
编辑2:要保存startTime
,使其在应用程序关闭时不会丢失,请使用SharedReferences
。可以看到一个使用SharedReferences
存储和检索值的示例。虽然这可能有效,但它不考虑时区更改或用户对时钟的操作,因此如果这与您无关,那么它是好的。@Jim True,我将把它添加到我的答案中。我如何保存信息,使其不会在每次应用程序重新启动时丢失?@user16655问得好,我将把它添加到答案中。虽然这可能有效,但它不考虑时区更改或用户对时钟的操纵,因此如果这与您无关,那就好了。@Jim True,我将把它添加到我的答案中。我如何保存信息,以免每次重新启动应用程序时信息丢失?@user16655问得好,我将把它添加到答案中。虽然这