Android Asynctask Operation

为了获取更佳的用户体验我们使用Asynctask

keypoint:

   doInBackground():只有一点,不要去操作UI,因为其他线程不能操作UI主线程,其他都OK

   onPostExecute():将回到主线程中,操作数据,所以下面给各列子

   据说这种类,不适合多次的调用?有待实验?

AsyncTask
package com.example.comunicationwithserver;

import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;

import android.R.string;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
    private TextView textView=null;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView=(TextView)findViewById(R.id.textView);
        DownloadTask downloadTask=new DownloadTask();
        downloadTask.execute();
     
    
    }
    
        
    class DownloadTask extends AsyncTask<String, Integer, String>{
        String resultData="lee";
        @Override
        protected String doInBackground(String... params) {
             try {
                    URL url=new URL("http://www.baidu.com");
                    HttpURLConnection conn=(HttpURLConnection)url.openConnection();
                    conn.setDoInput(true);
                    InputStreamReader isr=new InputStreamReader(conn.getInputStream());
                    BufferedReader buffer=new BufferedReader(isr);
                    String inputLine="";
                
                    while((inputLine=buffer.readLine())!=null){
                        resultData+=inputLine+"\n";
                    }
                    isr.close();
                    conn.disconnect();
                    System.out.println(resultData);
                    
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
        
            }
            
        
        
            return null;
        }
        @Override
        protected void onPostExecute(String result) {
            textView.setText(resultData);
            super.onPostExecute(result);
        }
    
        
    }
}

 

  

  

posted @ 2012-08-13 15:39  Epirus  阅读(284)  评论(0编辑  收藏  举报