public void ReadURL(String url) {
new AsyncTask<String, Float, String>() {
@Override
protected String doInBackground(String... params) {
//不能做任何与界面有关的操作或互动,所有与UI相关的操作放到回调方法里面进行。
try {
System.out.println("MainActivity.doInBackground");
URL url = new URL(params[0]);
URLConnection connection = url.openConnection();
long total = connection.getContentLength();
InputStream inputStream = connection.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String line;
StringBuilder stringBuilder = new StringBuilder();
while ((line = bufferedReader.readLine()) != null) {
stringBuilder.append(line);
publishProgress((float)stringBuilder.toString().length()/total);
}
bufferedReader.close();
inputStreamReader.close();
return stringBuilder.toString();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onCancelled() {
super.onCancelled();
System.out.println("MainActivity.onCancelled");
}
@Override
protected void onCancelled(String s) {
super.onCancelled(s);
System.out.println("MainActivity.onCancelled");
}
@Override
protected void onPostExecute(String s) {
textView.setText(s);
System.out.println("MainActivity.onPostExecute");
super.onPostExecute(s);
}
@Override
protected void onPreExecute() {
textView.setText("");
System.out.println("MainActivity.onPreExecute");
super.onPreExecute();
}
@Override
protected void onProgressUpdate(Float... values) {
super.onProgressUpdate(values);
System.err.println("MainActivity.onProgressUpdate" + values[0] );
}
}.execute(url);
}
Android 多线程 AsyncTask的用法
最新推荐文章于 2021-05-26 00:03:00 发布