package com.example.test;  import java.net.URL; import java.util.Timer; import java.util.TimerTask;  import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory;  import org.xml.sax.InputSource; import org.xml.sax.XMLReader;  import android.app.Activity; import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.util.Log;  public class MyXmlPoller extends Activity {      private Handler handler = new Handler();      @Override     public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.main);          new Timer().schedule(new MyTimerTask(), 0, 1000);     }      private class MyAsyncTask extends AsyncTask {          protected MyData doInBackground(Integer... counter) {             MyData myData = new MyData();              try {                 URL url = new URL("http://www.example.com/my.xml");                 SAXParserFactory spf = SAXParserFactory.newInstance();                 SAXParser sp = spf.newSAXParser();                  XMLReader xr = sp.getXMLReader();                  MySAXHandler mySAXHandler = new Handler();                 xr.setContentHandler(mySAXHandler);                  xr.parse(new InputSource(url.openStream()));                  myData = mySAXHandler.getParsedData();                  return myData;              } catch (Exception e) {                 Log.e("!!!!!!!!!! MyAsyncTask doInBackground error", e.getMessage(), e);                 return myData;             }          }          protected void onPostExecute(MyData myData) {             Log.d("+++++++++++++ MyAsyncTask onPostExecute", myData.toString());         }     } // MyAsyncTask     private Handler mHandler = new Handler();   public class MyTimerTask extends TimerTask {     public void run() {         mHandler.post(             new Runnable() {                  public void run() {                      new MyAsyncTask().execute("");                 }              };              )     } } } 

 在这里呢一定要注意TimerTask要运行在Handler中。

 

当然上面的代码也可以如下变化

URL url = new URL("http://www.example.com/my.xml");             SAXParserFactory spf = SAXParserFactory.newInstance();             SAXParser sp = spf.newSAXParser();              XMLReader xr = sp.getXMLReader();              MyHandler myHandler = new MyHandler();             xr.setContentHandler(myHandler); 

 

将上面的放在onPreExecute() method 中。

http://developer.android.com/intl/fr/reference/android/os/Looper.html

更多相关文章

  1. Android(安卓)《第一行代码》 第二章练习代码 ActivityTest
  2. Android模拟强制下线通知功能实例代码
  3. 使用xml和java代码混合控制UI界面
  4. 动态注册广播接收器
  5. 代码碎片
  6. android 混淆代码gson数据nullpointerexception
  7. Android中自定义标题栏(一)
  8. Android中自定义标题栏(二)
  9. 第一行代码第三章源码整理

随机推荐

  1. 在下方的tab页
  2. android BadTokenException之token is no
  3. android 内存清理
  4. android截屏代码:C++实现
  5. GoogleAndroid常用的Android常量
  6. 读取raw文件下文件内容
  7. android开发--RelativeLayout用到的一些
  8. Android(安卓)ImageSpan与TextView中的te
  9. Android中WebView如何加载JavaScript脚本
  10. Android预制APP第一次打开时不弹权限提示