在android中,可以通过AsysTask实现数据异步加载,例如更新进度条等等。
其基本的原理是通过回调方法进行,通过JavaScript也可以实现数据的异步加载,如果再深入的话就是所谓的
Ajax:
Servlet代码:AjaxServlet:

1 package web.servlet; 2 3 import java.io.IOException; 4 import java.io.PrintWriter; 5 6 import javax.servlet.ServletException; 7 import javax.servlet.http.HttpServlet; 8 import javax.servlet.http.HttpServletRequest; 9 import javax.servlet.http.HttpServletResponse; 10 /** 11 * 12 * @author wuxing 13 * 注意异步加载的缓存,是不应该有的。 14 */ 15 public class AjaxServlet extends HttpServlet{ 16 @Override 17 protected void doGet(HttpServletRequest req, HttpServletResponse resp) 18 throws ServletException, IOException { 19 PrintWriter out= resp.getWriter(); 20 System.out.println("method invoked"); 21 //为了测试同步数据使用 22 try { 23 Thread.sleep(5000); 24 } catch (InterruptedException e) { 25 // TODO Auto-generated catch block 26 e.printStackTrace(); 27 } 28 resp.setHeader("pragma", "no-cache"); 29 //resp.setDateHeader(name, date); 30 out.println("hello world"); 31 out.flush(); 32 super.doGet(req, resp); 33 } 34 }
JavaScript代码

1 <script type="text/javascript"> 2 var xmlHttpRequest=null; 3 4 //第一步:浏览器判断 5 var ajaxSubmit=function(){ 6 if(window.ActiveXObject){ 7 xmlHttpRequest=new ActiveXObject("Microsoft.XMLHTTP"); 8 }else{ 9 xmlHttpRequest=new XMLHttpRequest(); 10 } 11 if(xmlHttpRequest!=null){ 12 //第二步。注册对象监听该方法,使用回调方法 13 xmlHttpRequest.open("get", "ajaxServlet",true, null, null); 14 15 //onreadystatechange不是一个常量 16 xmlHttpRequest.onreadystatechange=ajaxCallback; 17 xmlHttpRequest.send(null); 18 //xmlHttpRequest. 19 } 20 } 21 //第三步,回调方法,对返回的Http消息进行判断是否为200 ok 22 var ajaxCallback=function(){ 23 //http Request为4 24 if(xmlHttpRequest.readyState==4){ 25 if(xmlHttpRequest.status==200){ 26 var xmlHttpText=xmlHttpRequest.responseText; 27 document.getElementById("div1").innerHTML=xmlHttpText; 28 } 29 } 30 } 31 </script>
Html代码

1 <body> 2 <input type="button" onclick="ajaxSubmit()" value="get content from server"> 3 <div id="div1"></div> 4 </body>