您的位置:首页 > 移动开发 > Android开发

Android:Timer定时器

2012-09-17 15:21 393 查看
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是否连接上AP
ConnectivityManager 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 timer
ParseXmlAndProcess(xmlUrl);
}
catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
mHandler.postDelayed(this, 60000);//start timer
}
}
};
2. Thread+Handler

private volatile boolean isHandlingMessage = false;
private Handler mHandler = new Handler() {
@Override
public 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();
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: