Android web与多线程

本文详细介绍了Android端与web交互的基础知识,包括url、Get与Post方式、Json,以及Android web访问和数据收发。在Android中,由于主线程中访问网络会引发错误,通常使用Service或异步方式进行网络访问。异步访问网络中,重点讲解了AsyncTask和多线程的使用,包括如何通过Handler进行UI线程与工作线程的交互。
摘要由CSDN通过智能技术生成

安卓端与web交互的方式

1.  基础知识

1.1   web基础知识

url:统一资源定位器。
Get方式与Post方式:

http协议中数据传输的两种方式。

其中Get方式传入数据量有限,在url后面直接跟上?与键值对即可,键值对之间用&链接。例如http://192.168.1.154:8080/GPS_SSH/release-json?code=39,199&name=haha。其中参数名需要与后台中规定的参数名一致(大小写敏感)。适合进行查询操作

Post方式因为不会将键值对显示在url中,相对比较安全,提交的数据量也比较大,但是提交方式较为复杂,适合做插入等操作。不做赘述。

Json

一种数据交换格式,由于访问web服务的时候返回的html页面格式较乱且不固定(html标记),不利于解析,所以一般使用json或xml作为数据交换的格式,方便程序中进行相应的解析工作。

1.2   android web基础知识

webview组件

使用内置浏览器来访问网页内容,wekiit内核。

Httpclient类

Apache封装的http访问类,据说效率比较高

HttpURLConnection类

Java自带基础hhtp访问类,通过与IO流缓冲流等配合获取web数据。通过url的openConnection()获取一个实例,调用实例的getInputStream()方法获取一个InputStream对象,web响应的数据就存在该对象中,由于网络的高速性一般构造一个缓冲流来存储InputStream中的数据。

2.  安卓web访问与数据收发

1.    权限

安卓中访问网络需要在AndroidManifest.xml中进行权限的申请,在最后添加<uses-permission android:name="android.permission.INTERNET">  </uses-permission>即可

2.    网络访问与多线程

2.1  主线程中访问网络

安卓4.0后如果在主线程中访问网络,则会报Timeout,NetworkOnMainThreadException错误。主要是因为网络服务往往需要消耗大量时间,而ui线程暂停5s以上就会出现ANR。但是如果是少量的web数据交换可以禁用StrictMode来忽略这个错误。具体代码为

StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()

                     .detectDiskReads()

                     .detectDiskWrites()

                     .detectNetwork()   //or .detectAll() for all detectable problems

                     .penaltyLog()

                     .build());

             StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()

             .detectLeakedSqlLiteObjects() //探测SQLite数据库操作

             .penaltyLog() //打印logcat

             .penaltyDeath()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值