67. (android开发)kotlin异步更新主线程

前几天抽空写了个文件和数据同时上传的内容。因为是go语言服务端为主,虽然客户端是kotlin android,但是没有发在这个文集中。有感兴趣的朋友,可以去 go学习笔记 中的编号 62 的笔记中找来看。
今天偶尔遇到服务端下载图片,需要异步更新的代码。于是写了个kotlin例子。
先交代一下场景。服务器上放着很多图片,android端需要同时下载好多张图片,并且显示。
但是android下载数据是很快的,可图片文件下载赶不上速度,就需要使用异步更新了。
这个例子使用了 Handler 和 Thread。
首先在主线程中,声明 Handler

val handle = object: Handler(){
     override fun handleMessage(msg: Message?) {
        holder?.txtvwPhoto?.setImageURI(Uri.fromFile(File("/sdcard/jian/" + manager?.Id.toString() + "_photo.png")))
     }
}

这里的 holder?.txtvwPhoto?.setImageURI(Uri.fromFile(File("/sdcard/jian/" + manager?.Id.toString() + "_photo.png"))) 是为了让主线程在子线程执行完毕后执行的语句。这里是显示一个指定地址的图片。

Thread(object : Runnable{
           override fun run() {
                  try {
                        ppp = SavaImage(GetImageInputStream(ppp)!!, Environment.getExternalStorageDirectory().getPath() + "/jian", manager?.Id.toString() + "_photo.png")

                        val msg = Message.obtain()
                        msg.obj = ""
                        //返回主线程执行
                        handle.sendMessage(msg)

                       } catch (e: Exception) {
                          Log.d("recycler下载网络图片:------》", e.message)
                       }
           }
}).start()

在子线程中,Thread做了一些下载的操作。ppp = SavaImage(GetImageInputStream(ppp)!!, Environment.getExternalStorageDirectory().getPath() + "/jian", manager?.Id.toString() + "_photo.png")
当然,你可以在这里写你想做的任何耗时的操作。
然后,用 handle.sendMessage(msg) 顺利回城了。

这个例子中的 msg并没有起到什么作用。而利用这个例子,完全可以让msg带一些数据返回主线程。这就是异步更新了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 0.Android手机操作系统的四层架构? Applications , Application Framewor...
    lucas777阅读 7,898评论 0 16
  • 众所周知在android中当执行程序的耗时超过5秒时就会引发ANR而导致程序崩溃。由于UI的更新操作是在UI主线程...
    北铭阅读 25,474评论 11 40
  • 第一步,找出五个形容词,来描绘你自己的个性; 第二步,找出这五个形容词的反义词; 放松,中正地坐着或站着,闭上眼睛...
    Joycty阅读 223评论 0 0
  • 小时候,每个暑假,舅舅都会来接我们去他过几天。年年如此,其实我是不情愿去的,那时候感觉舅舅家好远,表哥表姐也比我大...
    贝壳0703阅读 384评论 0 0
  • 知识蒸馏(Knowledge Distillation): 知识蒸馏即将知识从「教师」模型迁移到「学生」模型,执行...
    dreampai阅读 679评论 0 1