2014.10.30多线程的操作

本文介绍了在学习多线程过程中对InputStream、InputStreamReader和BufferedReader的理解,它们分别负责读取字节、字符和整行内容。同时,文章探讨了Android中使用AsyncTask进行多线程操作的方法,强调AsyncTask作为抽象类,可通过继承或直接调用其方法来实现后台任务,以及Params、Progress和Result三个泛型参数的用途。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在学习多线程的操作的时候才突然明白了InputStream InputStreamReader BufferedReader这三者的关系
InputStream能从來源处读取一个一个byte,

InputStreamReader一次读取一个一个字符,

BufferedReader一次读取取一行的字符


android为我们提供了方便的方法来操作多线程,通过AsyncTask来操作,AsyncTask是抽象类,要么创建子类继承AsyncTask,要么new AsyncTask之后执行doInBackground方法,覆写AsyncTask的几个方法,AsyncTask
有三个参数,Params,Progress,Result

Params,执行AsyncTask时需要传入的参数

Progress,后台执行时需要显示当前的进度,则使用这个泛型作为进度单位

Result,如果结果需要返回,则用此类型作为返回值的类型

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 inputStream=connection.getInputStream();
					InputStreamReader inputStreamReader=new InputStreamReader(inputStream);
					BufferedReader bufferedReader=new BufferedReader(inputStreamReader);
					String line;
					StringBuilder builder=new StringBuilder();
					while ((line=bufferedReader.readLine())!=null) {
						builder.append(line);
						
					}
					bufferedReader.close();
					inputStreamReader.close();
					return builder.toString();
				} catch (MalformedURLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				return null;
			}

			@Override
			protected void onPreExecute() {
				// TODO Auto-generated method stub
				super.onPreExecute();
			}

			@Override
			protected void onPostExecute(String result) {
				text.setText(result);
				super.onPostExecute(result);
			}

			@Override
			protected void onProgressUpdate(Void... values) {
				// TODO Auto-generated method stub
				super.onProgressUpdate(values);
			}

			@Override
			protected void onCancelled(String result) {
				// TODO Auto-generated method stub
				super.onCancelled(result);
			}

			@Override
			protected void onCancelled() {
				// TODO Auto-generated method stub
				super.onCancelled();
			}
			
		}.execute(url);
	}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值