定时器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的定位)

//执行定时任务

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"

相关文档
最新文档