android开发系列日志--(6)
一.下载 *
1.多线程下载
开启多个线程, 指定同一个URL, 指定同一个文件
不同的线程请求URL时指定不同的Range, 不同的写成写入同一个文件时seek()到不同的位置
每一个线程负责下载其中一部分
2.断点续传
在下载的过程中, 每下载一部分数据, 就把已完成的进度保存
下次开始的时候从文件中读取上次已完成进度, 从这个进度后面继续
二.Handler *****
1.什么是Handler
Handler可以用来在线程之间进行通信, Android中的界面组件只能在创建界面的线程中修改, 如果主线程创建界面, 那么新线程就无法修改.
某些时候我们一定要在新线程中修改主线程的界面, 这时就可以使用Handler通信.
2.怎么使用
sendMessdage
在新线程中通过Handler的引用调用sendMessage()方法, 发送一个Message对象
这时创建Handler的线程就会执行handleMessage()方法得到新线程发送的Message对象
post
在新线程中通过Handler的引用调用post()方法, 发送一个Runnable对象
这时创建Handler的线程就会执行Runnable中的run()方法
三.ANR异常
1.什么是ANR异常
Application Not Response 应用程序无响应, 在用户进行一个操作, 而Android系统6秒内没有对其进行处理的时候, 程序就会出现ANR异常.
2.为什么会出现ANR异常
Android系统中处理用户操作的工作是在主线程中执行的, 如果我们的程序在主线程中进行一些耗时的操作, 导致用户的操作6秒不能处理, 就会出现异常.
3.怎么解决
将耗时的操作放在新线程中执行
如果需要操作界面, 那么使用Handler进行处理
如果,这篇博客帮您解决了问题,不妨点击一下右下角的【推荐】。如果,您希望更容易地发现我的新博客,不妨点击一下【加关注】。因为,我的热情需要您的肯定和支持!感谢您的阅读,如果文章中有错误或者您有什么好的建议,也欢迎您直接留言批评指教。Thanks,friends! |