查看: 50|回复: 0

Android开辟高级进阶——多线程(实现简单下载器)

[复制链接]
发表于 2016-9-6 18:22:27 |未经授权,严禁转载,违者必究... | |阅读模式
进阶 多线程 开辟 下载器 高级 android 多线程下载器 多线程下载器 基于qt的多线程下载器 java多线程下载器 多线程文件下载器 城通盘下载器高级版 java多线程高级编程 java多线程简单实例 多线程高级编程
每个Android应用在被启动时城市建立一个线程,这个线程称为主线程或UI线程,Android应用的所有操作城市运行在这个线程中。可是为了包管UI的流利性,凡是会将耗时操作放到子线程中,例如IO操作、收集请求等。而几乎每个Android应用城市涉及到收集请求等耗时操作,所以多线程对于Android来说变得至关主要
这里经由过程实现一个简单的下载器来进修Thread和Runnable。
这个下载器就一个界面,包含一个输入框,一个进度条,用来显示下载进度,用来输入下载地址,一个按钮,用来最先下载
细心的人可能会留意到这里的按钮用了一个布景@drawable/btn_style,这里是自界说按钮的外形。代码如下:btn_style.xml
接下来就是下载操作了,代码如下:MainActivity.java
经由过程Handler把子线程中的message发送到主线程,并在handleMessage中更新进度条
。当Progress=100时,弹出Toast提醒下载完成
AsyncTask合用于简单的异步处置,不需要借助线程和Handler即可实现
利用AsyncTask的步调:
这里经由过程实现一个简单的下载器来进修AsyncTask。
细心的人可能会留意到这里的按钮用了一个布景@drawable/button_style,这里是自界说按钮的外形。代码如下:button_style.xml
界面写完了,实现下载代码,按照上面的步调,第一步是实现AsyncTask的子类,代码如下:DownloadAsyncTask.java
这里在onPreExecute()方式中实现了初始化并显示进度对话框,在doBackground()方式经由过程读文件、写文件完成下载使命,并挪用publishProgress()方式发出更新进度,在onProgressUpdate()方式中执行更新进度,在onPostExecute()方式中销毁进度条对话框,并弹出Toast提醒下载完成

上一步实现了AsyncTask的子类,这一步就需要建立该子类的实例,并执行execute()最先执行使命
短处:
[ol]
  • 每次都需要new Thread,新建对象机能差
  • 线程缺乏同一治理,可能无限制新建线程,彼此之间竞争,极可能占用过多系统资本导致死机或OOM
  • 缺乏更多功能,如按时执行、按期执行、线程中止
    [/ol]
    ThreadPoolExecutor——线程池(多线程的治理者)
    引入的益处:
    [ol]
  • 晋升机能,建立和耗损对象费时费CPU资本
  • 防止内存过度耗损,节制勾当线程的数目,防止并发线程过多
    [/ol]
    线程池的分类:
    [ol]
  • new CachedThreadPool:建立一个可缓存线程池,假如线程池长度跨越处置需要,可矫捷收受接管余暇线程,若无可收受接管,则新建线程
  • new FixedThreadPool:建立一个定长线程池,可节制线程最年夜并发数,超出的线程会在队列中期待
  • new ScheduledThreadPool:建立一个定长线程池,撑持按时及周期性使命执行
  • new SingleThreadPool:建立一个单线程化线程池,它只会用独一的工作线程来执行使命,包管所有的使命按照指定挨次(FIFO、LIFO、优先级)执行
    [/ol]
  • 返回顶部快速回复上一主题下一主题返回列表

    声远论坛|联系电话:0537-2311005|Archiver|手机版|小黑屋|Sitemap|声远网 |网站地图|网站地图

    鲁公网安备 37089702000485号 | 鲁ICP备 18028751号 | 互联网药品信息服务资格证:(鲁)-经营性-2022-0209 | 增值电信业务经营许可证:鲁B2-20230761号 | (鲁)职介证字[223]:第08120014号

    中国互联网违法和不良信息举报中心 | 山东省互联网违法和不良信息举报中心 | 人工智能生成合成内容标识办法

    GMT+8, 2026-5-31 14:44, Processed in 0.073024 second(s), 29 queries , Gzip On, APCu On.

    Powered by Discuz! X3.5© 2001-2026 SYUAN.COM

    快速回复 返回顶部 返回列表