定时器Timer实时修改时间间隔(周期)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.定时器Timer当时间间隔(周期)变化时,实时去修改
我项目中主要是实现在某个时间段上午8:00-12:00,下午
2:00(Pm_Start)-19:00 (Pm_end),每隔3分钟(pm_time)(可
以手动设置)自动上传当前的位置(google的定位)
//执行定时任务
PriVatebooIean bool = true ; // true表示服务器与本地数据相同,
false表示服务器与本地数据不相同
PriVateVOid Start_SChedUIe_pm() {
final Timer timer = new Timer();
timerTask = n ewTimerTask() {
@OVerride
PUbIiCVOid run() {
if (!bool) {
if (timer != nUIl ) {
Log. e("%%%%", bool + "");
timerTask.ca ncel();
timer.ca ncel();
Start_SChedUIe_pm();
bool = true
return
if ((getCurrentTime() - 12) >=
Double. Valueof ( Pm_end)) {
timerTask .cancel();
timer.ca ncel();
ZZ我的是在an droid SerViCe 里跑的程序,所以关闭了SerViCe
StOPSelf();
return
}
if
(!AppUtiIs. CheCkNet (getApplicationContext())) {
Log. d("data","网络未连接");
return ;
}
Log. d( "data","新任务开始");
if ( IoCatiOn != nUIl ) {
if ((getCurrentTime()-
12) >Double. Valueof ( Pm_Start )) {
// 这里需要handler 来实现,否则报Can't Create handler inSide thread that has not called Looper .prepare()
mHa ndler.se ndEmptyMessage(1);
mHa ndler.se ndEmptyMessage(2);
}
};
timer.schedule( timerTask , 0, Long. VaIUeOf ( Pm_time ) 60 * 1000);
}
Han dler mHan dler = n ewHa ndler() {
PUbIiCVOid han dleMessage(Message msg) {
SUPer .handleMessage(msg);
SWitCh (msg. What) {
CaSe 1:
//google 定位服务
onLocationChanged(location);
// getSqlData();
// 获取服务器数据并与本地数据相比较,如果不相同据库,bool=false
getSetTime();
break ;
case 2:
locationManager .requestLocationUpdates(
* 1000, 0,
LocationService. this );
break ;
default :
break ;
}
}
};
//google 定位服务即获取当前的location 需要implements LocationListener
locationManager = (LocationManager) update 本地数provider , 30
getSystemService( LOCATION_SERVIC)E;
Criteria criteria = newCriteria();
provider =
locationManager .getBestProvider(criteria, true );
location
locationManager .getLastKnownLocation( provider );
publicvoid onLocationChanged(Location location) { // 获得当前位置的纬度
latitude = location.getLatitude();
// 获得当前位置的经度
longitude = location.getLongitude();
Log. e( " 经纬度分别为:",
Calendar. getInstance ().getTime() + "longitude="
+ longitude + "latitude" + latitude );
// 获取当时的时间(24 小时制)
SimPIeDateFormatSDateFormat =
n ewSimpIeDateFormat(
"yyyy-MM-ddHH:mm:ss"