AysncTask是安卓提供的轻便异步操作类,在类中直接实现异步操作,并使用提供的接口,反馈当前异步操作的执行进度,也就是说可以通过接口实现UI进程的异步更新,或者说将执行的结果返回给UI主线程。这里通过获取blog.csdn.net的代码为例。
“
public class MainActivity extends Activity {
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView)findViewById(R.id.tttt);
findViewById(R.id.btn).setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View arg0){
ReadURL("http://blog.csdn.net");
}
});
}
public void ReadURL(String url){
new AsyncTask<String, Void , String>(){
@Override
protected String doInBackground(String... arg0){
try{
URL url = new URL(arg0[0]);
URLConnection connection = url.openConnection();
InputStream iStream = connection.getInputStream();
InputStreamReader isr = new InputStreamReader(iStream);
BufferedReader br = new BufferedReader(isr);
String line;
StringBuilder builder = new StringBuilder();
while((line = br.readLine())!= null){
builder.append(line);
}
br.close();
iStream.close();
return builder.toString();
} catch (MalformedURLException e){
e.printStackTrace();
}catch (IOException e){
e.printStackTrace();
}
return null;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected void onPostExecute(String s) {
textView.setText(s);
super.onPostExecute(s);
System.out.println(s);
}
@Override
protected void onProgressUpdate(Void... values) {
super.onProgressUpdate(values);
}
@Override
protected void onCancelled(String s) {
super.onCancelled(s);
}
@Override
protected void onCancelled() {
super.onCancelled();
}
}.execute(url);
}
}
“`
注意几个易错点.
line = br.readLine()! = null 不可写为” “