240 发简信
IP属地:陕西
  • 120
    你真应该再多了解些Handler机制

    背景介绍 我们在Android开发过程中,几乎都离不开线程。但是你对线程的了解有多少呢?它完美运行的背后,究竟隐藏了多少不为人知的秘密呢?线程间互通暗语,传递信息究竟是如何做...

  • 主线程(UI线程)执行到这一步就进入了死循环,不断地去拿消息队列里面的消息出来处理?那么问题来了
    1、UI线程一直在这个循环里跳不出来,主线程不会因为Looper.loop()里的死循环卡死吗,那还怎么执行其他的操作呢?

    在looper启动后,主线程上执行的任何代码都是被looper从消息队列里取出来执行的。也就是说主线程之后都是通过其他线程给它发消息来实现执行其他操作的。生命周期的回调也是如此的,系统服务ActivityManagerService通过Binder发送IPC调用给APP进程,App进程接到到调用后,通过App进程的Binder线程给主线程的消息队列插入一条消息来实现的。
    2、主线程是UI线程和用户交互的线程,优先级应该很高,主线程的死循环一直运行是不是会特别消耗CPU资源吗?App进程的其他线程怎么办?

    这基本是一个类似生产者消费者的模型,简单说如果在主线程的MessageQueue没有消息时,就会阻塞在loop的queue.next()方法里,这时候主线程会释放CPU资源进入休眠状态,直到有下个消息进来时候就会唤醒主线程,在2.2 版本以前,这套机制是用我们熟悉的线程的wait和notify 来实现的,之后的版本涉及到Linux pipe/epoll机制,通过往pipe管道写端写入数据来唤醒主线程工作。原理类似于I/O,读写是堵塞的,不占用CPU资源。

  • android 跨进程通信及回调

    前言 我们在应用开发当中经常会需要把一些耗时和复杂的操作放这另外一个服务当中去处理,如果这个服务有一些公共的处理需求的话,我们就需要把这个服务当都的作为一个apk来处理,现在...

  • 120
    寄Android开发Gradle你需要知道的知识

    当毕业不够两年,身边的朋友慢慢得有车有房有女朋友周末有自己的节目,而我觉得很多美好的事情我都遥不可及,找不到可以让自己开心的事情做,心情很不好。但是同时我觉得沉淀需要时间、努...