定时器Timer实时修改时间间隔(周期)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.定时器Timer当时间间隔(周期)变化时,实时去修改

我项目中主要是实现在某个时间段上午8:00-12:00,下午

2:00(pm_start)-19:00(pm_end),每隔3分钟(pm_time)(可以手动设置)自动上传当前的位置(google的定位)

// 执行定时任务

privateboolean bool= true;// true表示服务器与本地数据相同,false表示服务器与本地数据不相同

privatevoid start_schedule_pm() {

final Timer timer = new Timer();

timerTask = new TimerTask() {

@Override

publicvoid run() {

//当不相同时取消timer重新new一个timer

if (!bool) {

if (timer != null) {

Log.e("%%%%", bool + "");

timerTask.cancel();

timer.cancel();

start_schedule_pm();

bool = true;

return;

}

}

if ((getCurrentTime() - 12) >=

Double.valueOf(pm_end)) {

timerTask.cancel();

timer.cancel();

//我的是在android service里跑的程序,所以关闭了service

stopSelf();

return;

}

if

(!AppUtils.checkNet(getApplicationContext())) {

Log.d("data", "网络未连接");

return;

}

Log.d("data", "新任务开始");

if (location != null) {

if ((getCurrentTime() -

12) >Double.valueOf(pm_start)) {

//这里需要handler来实现,否则报Can't create handler inside thread that has not called Looper.prepare()

mHandler.sendEmptyMessage(1);

}

}

mHandler.sendEmptyMessage(2);

}

};

timer.schedule(timerTask, 0, Long.valueOf(pm_time) * 60 * 1000);

}

Handler mHandler = new Handler() {

publicvoid handleMessage(Message msg) {

super.handleMessage(msg);

switch (msg.what) {

case 1:

//google定位服务

onLocationChanged(location);

// getSqlData();

//获取服务器数据并与本地数据相比较,如果不相同update本地数据库,bool=false

getSetTime();

break;

case 2:

locationManager.requestLocationUpdates(provider, 30 * 1000, 0,

LocationService.this);

break;

default:

break;

}

}

};

//google定位服务即获取当前的location需要

implements LocationListener

locationManager = (LocationManager)

getSystemService(LOCATION_SERVICE);

Criteria criteria = new Criteria();

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小时制)

SimpleDateFormatsDateFormat =

new SimpleDateFormat(

"yyyy-MM-ddHH:mm:ss");

time = sDateFormat.format(new Date()); //把数据上传到服务器

isPositionAvailable();

}

相关文档
最新文档