Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android中的计时器-如何在手机或应用关闭时保持计数_Android_Android Handler - Fatal编程技术网

Android中的计时器-如何在手机或应用关闭时保持计数

Android中的计时器-如何在手机或应用关闭时保持计数,android,android-handler,Android,Android Handler,我正在尝试实现一个计时器,它只计算自按下start以来经过的时间。即使应用程序/手机已关闭,我也需要保留此计数器。我如何做到这一点?在应用程序关闭时将当前时间存储在某个位置,然后在应用程序再次打开时检索此数据?如果这是一个很好的方法,我该如何实现这个解决方案?我希望有人能提供一些意见 我已经使用Handler实现了我的计时器/计数器(我在StackOverflow的回答中看到了这个解决方案)您应该使用。它利用pendingent向应用程序的组件发送通知,例如发送到BroadcastReceive

我正在尝试实现一个计时器,它只计算自按下start以来经过的时间。即使应用程序/手机已关闭,我也需要保留此计数器。我如何做到这一点?在应用程序关闭时将当前时间存储在某个位置,然后在应用程序再次打开时检索此数据?如果这是一个很好的方法,我该如何实现这个解决方案?我希望有人能提供一些意见


我已经使用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问得好,我将把它添加到答案中。虽然这