Android:Timer定时器
16lz
2021-01-23
1. Handler+Runable
private Handler mHandler = new Handler(); //解析远程XML,下载和安装APK private Runnable mRunnable = new Runnable() {private volatile boolean isParsingXml = false;public boolean isParsingXml() {return isParsingXml;}public void setParsingXml(boolean isParsingXml) {this.isParsingXml = isParsingXml;}public void run() {if(!isParsingXml){// 检查WIFI是否连接上APConnectivityManager conMan = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);mWifi = conMan.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();if (mWifi == State.CONNECTED) {String xmlUrl = Constants.Url.SERVER_URL_APP_LIST_XML;try {isParsingXml = true;mHandler.removeCallbacks(mRunnable); //stop timerParseXmlAndProcess(xmlUrl);}catch (XmlPullParserException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}mHandler.postDelayed(this, 60000);//start timer}} };2. Thread+Handler
private volatile boolean isHandlingMessage = false;private Handler mHandler = new Handler() {@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);if(!isHandlingMessage){isHandlingMessage = true;Log.v(TAG, "handling Message.");SaleMgrService.updateAppRunCount();isHandlingMessage = false;}}};
private class RunCountThread extends Thread {public void run() {super.run();Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_BACKGROUND);while(true){try{Thread.sleep(90000);if(!isHandlingMessage){Message msg = new Message();msg.what = 1;mHandler.sendMessage(msg);}}catch(InterruptedException e){e.printStackTrace();}}}}
更多相关文章
- 代码中设置drawableleft
- android 3.0 隐藏 系统标题栏
- Android开发中activity切换动画的实现
- Android(安卓)学习 笔记_05. 文件下载
- Android中直播视频技术探究之—摄像头Camera视频源数据采集解析
- 技术博客汇总
- android 2.3 wifi (一)
- AndRoid Notification的清空和修改
- Android中的Chronometer