创建一个新工程LearnAsyncTask,一个空Activity,上面放置几个控件
<
| |||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||
public class MainActivity extends AppCompatActivity { private TextView tvRead; private EditText etUri; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tvRead= (TextView) findViewById(R.id.tvRead); etUri= (EditText) findViewById(R.id.etUri); findViewById(R.id.btnRead).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { new ReadHttpAsyncTask().execute(etUri.getText().toString()); } }); } //读取http数据的方法 private class ReadHttpAsyncTask extends AsyncTask<String, Integer, String> { @Override protected void onCancelled() { super.onCancelled(); } @Override protected void onCancelled(String s) { super.onCancelled(s); } @Override protected void onPostExecute(String s) { tvRead.setText(s); super.onPostExecute(s); } @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected void onProgressUpdate(Integer... values) { super.onProgressUpdate(values); setTitle("已经完成比例"+Integer.toString(values[0])); } //*doInBackground中不能直接操作UI。 @Override protected String doInBackground(String... params) { try { URL url = new URL(params[0]); URLConnection connection = url.openConnection(); int total=connection.getContentLength(); //获取要读取的内容总数量 InputStream is = connection.getInputStream(); InputStreamReader isr = new InputStreamReader(is,"utf-8"); BufferedReader br = new BufferedReader(isr); String line; StringBuilder stringBuilder=new StringBuilder(); while((line = br.readLine()) != null){ stringBuilder.append(line); System.out.println("===输出信息到Logcat:" + line); //注意publishProgress中传入的数据类型与AsyncTask的第二个参数类型必须一致,否则会保存 publishProgress(stringBuilder.toString().length()/total); } br.close(); isr.close(); is.close(); return stringBuilder.toString(); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } } }
| |||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||
|