笔记9--anr、消息机制、访问网络

小知识:当指定宽或高为0时,weight代表渲染的权重。当指定宽高不为0时,代表渲染的优先级。值越大,代表优先级越低。举例说下:一个LinearLayout显示一张图、一个按钮,当图片设置高为match_parent时,按钮就看不到了;此时如果weight设置一个大于0的数(越大越好),此时按钮就会显示出来,图和按钮占满LinearLayout。


内部类访问外部变量的方法:将变量设置为final。


BitmapFactory:可以直接从不同的源(文件,流,byteArrays)创建位图对象。

1、

4.0以上的系统不允许网络操作在主线程里。

ANR:application not response程序无响应。

产生的原因:主线程要做很多事情,响应点击事件,更新ui。若在主线程里面阻塞太久,应用程序就会无响应。

为了避免应用程序出现anr,所有的耗时操作都应放在子线程里面执行。


2、

更新ui内部实现:更新界面时做了个检查,更新完ui后,检查这个更新的操作是否在主线程代码执行的。如果是,没问题;如果不是,立刻抛出一个运行时异常:ViewRootImpl$CalledFromWrongThreadException。它不是不允许子线程更改ui,它是在子线程更改完ui后,发现有子线程更改ui,才抛出一个异常。


Handler:消息处理器,用来发送和接受消息

Message:消息。

属性:what:指定消息内容(消息解析时用到)。obj:指定消息传递的数据

sendMessage():发送消息

handleMessage():处理消息


子线程想要更改界面:1、主线程创建消息处理器2、子线程利用handler发送一条消息,消息被放在主线程的消息队列。3、主线程里有一个looper(消息的轮询器)。如果looper发现了新的消息,调用handlemessage方法处理消息。


3、

访问网络的步骤:根据URL发送http请求,设置连接参数,获取响应结果。更简单点说URL建立连接,HttpURLConnection传输信息。

URL url=new URL(String path);

url.openConnection():返回一个http连接

HttpURLConnection:通过web发送和接受数据。

setRequestMethod():请求方式。

setConnectionTimeout():设置连接最大连接时间。

setReadTimeout():读取数据最大时间。

setRequestProperty():设置请求参数。

getResponseCode():获得响应码。200代表ok,404代表资源未找到,503代表内部错误。

getInputStream():获取输入流。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值