采用Timer+TimerTask+Handler+LocationManager这种定时的间隔定位时,在TimerTask中用handler发sendMessage,然后在Handler的handleMessage里面处理message并进行定位。这种方式是完全合理且正确的,
因为我也查了查,有人是这样说的:
Ok took me a while but I have found the solution to
this,as the documentation says you can only request location updates
from the location manager from a looper thread, that means that when the
timer task is called you have to obtain a message and send the message
to a handler and the handler would be responsible for requesting
location updates.
来自于http://www.questionhub.com/StackOverflow/3589963
于是,我又查了查官方文档中Reference对LocationManager的方法requestLocationUpdates
(String
provider, long minTime, float minDistance, LocationListener
listener)
的解释,有这么一句话,如下:
The calling thread must be a Looper
thread such as
the main thread of the calling Activity.
所以,正好在Activity里面创建一个Handler时,就满足了上面的要求,创建一个没有形参的Handler时,文档中是这么解释的,如下:
Default constructor associates this handler with the queue for the
current thread.
综上所述,这些是我能解释和查到的。
分享到:
相关推荐
在Java编程语言中,`Timer`和`TimerTask`是两个关键类,它们构成了Java的定时执行机制。这两个类在处理周期性任务或者延迟任务时非常有用,它们可以帮助开发者实现程序在特定时间点或者按照一定间隔执行特定操作的...
在Java编程语言中,`TimerTask`和`Timer`是两个关键类,它们用于实现定时任务和调度。这两个类在处理需要定期执行的任务时非常有用,例如数据刷新、任务调度或者周期性的系统检查等。本篇文章将深入探讨`TimerTask`...
总结起来,通过Handler和TimerTask实现的简易定时器利用了Java的定时任务机制和Android的消息处理机制,可以在指定的间隔内周期性地执行任务。这种实现方式简单易懂,适用于许多基本的定时需求。但在复杂的应用场景...
下面是一个在Android中使用定时器Timer和TimerTask的启动,停止,暂停,继续等操作的demo。 需要注意的问题主要有两点: 1、Timer和TimerTask在调用cancel()取消后不能再执行 schedule语句 2、只能在UI主线程中更新...
在这种场景下,Android提供了多种机制来实现定时任务,包括`Timer`、`TimerTask`以及`Handler`。这三种工具可以协同工作,确保数据更新和View更新的同步,从而避免界面卡顿和不流畅的问题。 1. **Android Timer** ...
`Timer` 和 `TimerTask` 是Java中用于实现定时任务的重要工具。它们提供了一种简单有效的方式来安排任务的执行,既可以一次性执行也可以周期性地执行。这对于实现定时提醒、定时备份等功能非常有用。 #### 二、...
`adc.c`可能包含初始化ADC、配置DMA、设置定时器触发ADC转换等功能的函数,如`adc_init()`, `dma_config()`, `timer_setup_for_adc()`等。而`adc.h`则定义了这些函数的原型以及相关结构体和枚举类型,供其他模块调用...
我们平时经常会用到timer,不过将timer放在主线程会加重主线程的负担 所以我们更倾向于使用多线程实现timer,每隔一段时间再通知主线程更新ui 大致思路: 使用thread,run,...使用timer,timerTask实现定时器功能
Java 计时器 Timer 和 TimerTask 用法总结 Java 中的计时器(Timer)和 TimerTask 是一种常用的延迟执行技术,用于实现延迟执行某个任务或事件。下面将详细介绍 Timer 和 TimerTask 的用法和实现原理。 Timer ...
在Java编程语言中,`Timer`和`TimerTask`是用于执行定时任务的重要类。这两个类通常被用来处理那些需要在指定时间或周期性执行的任务,比如定时清理缓存、定时更新数据库等场景。 #### Timer简介 `Timer`类是一个...
在这个例子中,`TimerTask`的`run`方法通过`Handler`在UI线程中运行,从而安全地改变`Gallery`的选择项。`gallery.setSelection()`方法用于设置当前选中的图片索引,`true`参数表示动画效果。 此外,为了提供更好的...
Java中的`java.util.Timer`和`java.util.TimerTask`类提供了这样的功能,让我们能够在程序中实现定时任务。本文将深入探讨这两个类的工作原理和如何在Web环境中使用它们。 `Timer`类是Java的一个调度工具,它允许...
本篇将重点讲解如何利用`Timer`和`TimerTask`这两个工具来实现这样的功能,特别是针对`TextView`控件。 `Timer`类是Java.util包中的一个类,它提供了调度任务在未来某个时间点执行的能力。而`TimerTask`是`Timer`类...
最常用的有两种方式:基于`java.util.Timer`的`TimerTask`和基于`Quartz`或`CronTrigger`的定时任务。本文主要讨论的是基于`TimerTask`的实现。 ### 使用JDK TimerTask `TimerTask`是Java标准库中的一个抽象类,...
**自动切换**是通过定时任务(Timer)和消息处理(Handler)实现的。这里,你可以创建一个TimerTask,每隔一段时间(如3秒)执行一个任务,这个任务会发送一个消息到Handler。Handler接收到消息后,会调用`ViewPager...
ICE_Timer 类负责创建和管理定时任务,而 TimerTask 类则是具体定时任务的抽象接口,任何需要执行的具体任务都需要继承自 TimerTask 并重写 `runTimerTask` 方法。 #### 二、ICE_Timer 类详解 ##### 2.1 构造与...
首先,创建一个Timer对象,然后设置一个TimerTask,这个任务会在指定的时间间隔内执行。在TimerTask的run()方法中,我们需要更新ViewPager的当前页面。由于不能直接在TimerTask中更新UI,所以我们需要通过Handler...
用ViewPager实现手动切换,用Timer + Handler实现自动切换,左右完美无限滑动效果非常平滑.zip安卓程序源码用ViewPager实现手动切换,用Timer + Handler实现自动切换,左右完美无限滑动效果非常平滑.zip安卓程序源码...
用ViewPager实现手动切换,用Timer + Handler实现自动切换,左右完美无限滑动效果非常平滑.zip项目安卓应用用ViewPager实现手动切换,用Timer + Handler实现自动切换,左右完美无限滑动效果非常平滑.zip项目安卓应用...
本示例重点讲解如何利用ViewPager实现手动切换,并结合Timer和Handler来达到自动切换的效果,使得用户既可以手动滑动页面,也可以设定间隔自动滑动,提供无缝平滑的用户体验。 首先,我们要了解ViewPager的基本用法...