Amdroid网络连接---URL连接及单线程网络下载
来源:互联网 发布:数控铣床编程简单图案 编辑:程序博客网 时间:2024/05/17 00:06
ScrollView只能有一个子控件,子控件可以嵌套其他控件
UI线程中不能使用网路连接,必须新建一个线程创建连接,那么就可以使用Handler和Anynctask,当然作为网络连接肯定是有权限,Webview写了在这不赘述
首先使用用Handler:
在button点击事件中新建一个线程用于连接网络:
public void onClick(View v) {switch (v.getId()){case R.id.button_url: Thread thread=new Thread(new Runnable() {@Overridepublic void run() { connectServlet();//调用用于网络连接的方法 } }); thread.start();break; }}
用于网络连接的方法:
private void connectServlet() {try { URL url=new URL("http://www.360.com"); //跟java中一样的写法 URLConnection connection=url.openConnection(); InputStream is=connection.getInputStream();//得到输入流 BufferedReader bf=new BufferedReader(new InputStreamReader(is)); String line=bf.readLine(); StringBuffer buffer=new StringBuffer();while (!line.isEmpty()){ line=bf.readLine(); buffer.append(line);//动态加载读取的网页内容 Log.d("", line); Message msg=handler.obtainMessage();//发送message给Handler,显示到Texview msg.obj=buffer.toString().trim();//去除空格 msg.what=CONNECT;handler.sendMessage(msg); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }}
初始化Handler,用Handler把message放到Textview上显示,最后的结果是网页源码,因为是按字节读的网页:
private Handler handler=new Handler(){@Overridepublic void handleMessage(Message msg) {switch (msg.what){case CONNECT: String message= (String) msg.obj;mTextview_show.setText(message);//把读取的网页显示到textview上break; } }};
现在在写一个用Anynctask的单线程网络下载任务,因为是封装好的,所以按格式写就好了,直接上代码:
省略控件声明、inviewbyid、以及balabala~
public void onClick(View v) {switch (v.getId()){case R.id.button_single: MySingleDownloadtask task =new MySingleDownloadtask(); task.execute();//启动taskbreak;case R.id.button_more:break; } }class MySingleDownloadtask extends AsyncTask<String,Integer,String>{@Overrideprotected String doInBackground(String... params) {try { URL url=new URL("http://192.168.0.30:8080/MyWebTest/music/aa.mp3");//连接服务器文件绝对路径URLConnection connection=url.openConnection();int length=connection.getContentLength(); InputStream is=connection.getInputStream();//得到输入流File file=new File(Environment.getExternalStorageDirectory(),"aa.mp3");if (!file.exists()){//文件是否存在 file. createNewFile(); } FileOutputStream os=new FileOutputStream(file);//给file建立输出流byte[] array=new byte[1024];int data=is.read(array);int sum=0;while (data!=-1){ os.write(array,0,data);//从数组偏移量0开始写data到输出流 sum+=data; publishProgress(sum, length); data=is.read(array); } os.flush(); os.close(); is.close(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }return null; }@Overrideprotected void onProgressUpdate(Integer... values) {super.onProgressUpdate(values);int progress= (int) (values[0]*100.0/values[1]);//转换成百分比形式,不用写setMaxprogressBar.setProgress(progress); }@Overrideprotected void onPostExecute(String s) {super.onPostExecute(s); } }}
0 0
- Amdroid网络连接---URL连接及单线程网络下载
- 第三十六天 网络连接、单线程、多线程下载
- 网络连接——文件下载(单线程/多线程)
- Android 网络连接 打开 Url下载 信息
- 网络连接2 单线程和多线程下载 并更新progressbar
- Android手机开发:网络连接-打开Url下载信息
- 网络技术之——网络连接URLConnection、单/多线程下载
- 网络及拨号连接
- 网络配置及连接
- Android中开辟线程(下载-网络连接)
- 文件下载 Http网络连接
- Android网络连接---多线程下载
- 查看Linux网络连接及连接总数
- 网络连接
- 连接网络
- 网络连接
- 网络连接
- 网络连接
- Week1-5Union-Find Applications
- MySQL常用语句
- 在线重定义
- NOIP初赛试题及答案合集
- Axure中导航和滚动图片实例
- Amdroid网络连接---URL连接及单线程网络下载
- c++函数返回值的引用
- iGrimace IG 1.44 V3 正版苹果ios 陌陌微信遇见Uber 优步 积分墙 igrimac3.0.0高级版
- mysql#1入门
- 堆排序(七)
- POJ 1276 Cash Machine 【多重背包-二进制优化】
- 互联网团队的三三得九战术
- ODS VS. DW
- KMP算法的C语言实现