Android:Timer定时器

来源:互联网 发布:阿里云那些域名备案 编辑:程序博客网 时间:2024/05/16 15:27

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();}}}}



原创粉丝点击