AndroidDev 板


LINE

http://slides.com/givemepass/android#/49 http://www.slideshare.net/rickwu12/ss-54297655 可以参考一下我写的投影片, 也可以去买一本书 高效能执行绪 欧莱礼出版的 http://www.books.com.tw/products/0010675871 AsyncTask只是帮你封装好跟UI Thread进行沟通, 但是更多情况是会被误用的, 主要原因是AsyncTask共同维护一个Thread Pool, 当你很多个Task在执行超过核心数的Thread, 你剩下的Task就会面临排队的下场, 因此再使用AsyncTask的时候, 最好是自定义Thread Pool, 另外有可能其实你只是需要背景处理任务, 又不需要progress回报, 这时候使用AsyncTask有一种杀鸡用牛刀的感觉, Thread(不推荐使用)、HandlerThread或者Executors.newSingleThreadExecutor() 会是比较好的选择, 如果你需要任务排队且不想并行处理, 那麽可以使用HandlerThread 如果你需要并行处理, 那麽可以使用newCachedThreadPool、newFixedThreadPool 以上搭配Handler(getMainLooper()).post就可以达到UI更新画面 Future Pattern是一种领号码牌的机制, 他会让你任务送出去以後, 去做自己的事情, 等到任务处理完成再来处理画面更新, Android很方便的把它跟ExecutorService绑在一起了, 让你可以轻松操作Executors, 例如 InvokeAll: 同时并行多个Thread, 并且透过blocking来取回每一个Task的结果。 InvokeAny: 同时并行多个Thread, 只要有一个回传成功, 则终止剩下的Task。 甚至可以使用ExecutorCompletionService 来控制每一个Task回传的结果。 透过这些高阶Thread机制的操作, 可以避免new太多Thread, 无法透过Thread来进行一些进阶的操作或者写出Callback Hell这种可怕的东西 生命周期受到控管...等等的好处 基本上我认为工具是先熟悉它再来择情况选择要使用哪种工具 才能达到这个工具的最大效益。 接着回答你的问题 : 写了安卓半年多了,http请求下载一直都是使用Asyntask, : 最近主管突然要来 code refactor,他说 Asyntask不容易读(每个 method 传值从哪来 ? : 不懂)执意要用 FutureTask,网路上的范例根本找不到有跟 ui 互动的 futuretask啊? ? : 用futuretask下载档案然後 broadcasts call view根本画面很塞(都黑屏了)考虑用 hand : er做了,可是这样跟 asyntask做法跟本一样,而且官方还封装的更好, : 请问版上的大大可以指导一下吗? : 真的可以用 futuretask做出良好的 http请求吗?谢谢!! 可以。 跟你在操控AsyncTask差不多 把网路串接的部分写在background 等到任务回来再去通知UI更新画面 至於怎麽写可以参考看看我写的范例 http://givemepass.blogspot.tw/2015/11/executorcompletionservice.html http://givemepass.blogspot.tw/2015/11/future-pattern-2.html 另外可以参考这段影片 是koji大在JCConf演讲内容 刚看完的时候 收获超多 https://www.youtube.com/watch?v=_EqitUOUpes&feature=youtu.be&t=0
你可以试着先实作看看 如果有疑问 可以考虑把你的程式码贴出来给大家看看 这边高手很多 应该可以帮你解决不少问题 -- posted from android bbs reader on my Nokia 3310 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.24.49.141
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/AndroidDev/M.1460552147.A.B71.html
1F:推 kewang: 这篇要mmmmmmmmmmmmmmmmm 04/13 23:58
2F:推 fightmz: 您好我有拜读过您在部落格的文章,这篇您又做了更完整的 04/14 01:44
3F:→ fightmz: 统整,我还没吸收完,先谢谢您,我的发问因为太急燥描述 04/14 01:44
4F:→ fightmz: 的太草率真抱歉 04/14 01:44
5F:推 fightmz: 连 asynctask都拼错(请多见谅QQ 04/14 01:46
6F:推 fightmz: 我会先再尝试写写看并修正我要的东西,毕竟是公司的专案 04/14 01:49
7F:→ fightmz: 不方便公开,如果有问题我会再整理好把问题和 code 放上 04/14 01:49
8F:→ fightmz: ,谢谢 04/14 01:49
9F:推 andy2151: 受益良多 感谢大大分享 04/14 09:16
10F:推 aiweisen: 推这篇 04/14 13:15
11F:→ firewolf: 如果用HandlerThread程式结束记得呼叫 quit(),否则会有 04/14 13:32
12F:→ firewolf: 一个 Thread在背景一直是在 running状态,不会被GC回收 04/14 13:33
13F:推 lovelycateye: Rick 神! 04/14 19:56
14F:推 tn00364477: rick 神! 已跪 04/15 09:19
15F:→ givemepass: 楼上两位神 别这样... 04/15 15:03
16F:推 da135ha: 太棒惹~~~ 04/17 21:02
17F:→ kobe8112: 好神! 04/19 11:33
18F:推 yuzhichen: 感谢大大分享,观念太重要! 04/20 17:12







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BabyMother站内搜寻

TOP