Android:Timer定时器
16lz
2021-12-04
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();}}}}
更多相关文章
- (android 关机/重启)Android关机/重启流程解析
- Android(安卓)XML解析
- Android(安卓)XML解析
- Android解析XML
- Android解析XML
- Android(安卓)深入解析selector
- Android(安卓)深入解析selector
- Android(安卓)xml 解析
- Android(安卓)进阶16:IntentService 使用及源码解析