Android Asynctask Operation
为了获取更佳的用户体验我们使用Asynctask
keypoint:
doInBackground():只有一点,不要去操作UI,因为其他线程不能操作UI主线程,其他都OK
onPostExecute():将回到主线程中,操作数据,所以下面给各列子
据说这种类,不适合多次的调用?有待实验?
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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); } } }