
Android Frameworks
文章平均质量分 89
aspook
公众号「像未来一样」
展开
-
RemoteViews原理分析及应用
转载请注明出处:http://blog.youkuaiyun.com/ahence/article/details/62418926RemoteViews基本概念RemoteViews乍一看名字似乎也是一种View,实则不然,它并不是View。来看RemoteViews的定义及官方说明:/** * A class that describes a view hierarchy that can be dis原创 2017-03-16 11:17:51 · 3756 阅读 · 0 评论 -
LocalBroadcastManager原理分析及应用
引言Android页面或模块之间通信的方法有很多,如Intent传值、startActivityForResult、EventBus(RxBus)等,大家追求的无非是解耦以及高灵活性;我们自己的应用中使用了基于Android消息机制封装的一套通信体系,且不谈这些,今天的主角是本地广播。本地广播是系统提供的一种应用内通信方式,它跟全局广播相比,其运行机制是不同的。全局广播是系统级别的,需要跨进程调用,原创 2017-10-12 11:10:45 · 1551 阅读 · 0 评论 -
Android Studio Instant Run的工作原理
首先说明一下,本文算不上严格意义的翻译,因此没有归档到译文类别。本文的主要内容总结自《Instant Run: How Does it Work?!》,文末会附上此文地址。Instant Run的工作原理Instant Run是Android Studio2.0以上版本引入的一个新特性,它可以显著地减少应用编译及部署的时间。Instant Run是一个神奇的功能,为什么这么说呢?当第一次你点击run原创 2016-06-02 09:14:21 · 2160 阅读 · 2 评论 -
Android消息机制源码解析(一)——消息的载体Message
说到Android的消息机制,大家再熟悉不过了,几乎每个逻辑界面中都会涉及到,Activity的生命周期回调也是通过系统消息机制完成的,可见消息机制在Android中的重要性。在应用层,一般我们都是使用Handler来发送、处理消息,从工作线程切换到主线程来更新UI。往往开发者只跟Handler、Message打交道就能满足需求了,但它们背后的实现原理是怎样的呢?为了加深理解,深入学习Androi原创 2015-12-13 23:03:51 · 1284 阅读 · 0 评论 -
Android消息机制源码解析(二)——消息的执行者Handler
这一节来分析Handler的源码实现,Handler从字面理解就是处理程序、处理器的意思,在Android消息机制中它扮演着执行者的角色,消息的发送、接收、处理都是由Handler来完成的,它也是跟开发者打交道最多的,因此我们更有必要深入了解Handler的实现原理。一、首先是Handler类的定义:public class HandlerHandler有以下几个主要属性字段:fi原创 2015-12-14 13:22:47 · 1714 阅读 · 0 评论 -
Android消息机制源码解析(三)——消息循环器Looper
本节来分析Looper,Looper可以理解为一个消息循环器,不断从消息队列中取出消息,然后交给Handler处理。如果一个线程中有多个Handler,则会根据Message的target属性来将消息处理任务分发到特定的Handler。如果消息队列中没有消息了,那么Looper就会等待,直到有消息进来,下面看一下Looper的源码实现。一、Looper类的定义如下public final原创 2015-12-14 20:23:41 · 1827 阅读 · 0 评论 -
Android消息机制源码解析(四)——消息队列MessageQueue
MessageQueue是Android消息机制系列文章的最后一个小节,MessageQueue的主要作用是按一定规则维护一个消息队列,并能够添加消息、取出消息、移除消息等。一、来看下MessageQueue是怎样定义的:public final class MessageQueue接下来是一些重要的属性字段:// True if the message queue can be原创 2015-12-15 11:10:22 · 1613 阅读 · 0 评论 -
Android进程间通信纪要
虽然Android是基于Linux的,但在Linux操作系统中的IPC技术在Android平台中被Binder Framework替代。Messenger、AIDL等进程间通信方式底层都是基于Binder的。Android中每个app都有独立的虚拟机,不同虚拟机在内存分配上有不同的地址空间,一般来说每个app都对应着一个进程,因此进程间通信不像线程间那样可以通过共享内存来实现。进程间通信传递的数原创 2016-04-11 18:34:07 · 938 阅读 · 0 评论 -
Bundle源码解析
Bundle的概念理解Bundle对于Android开发者来说肯定非常眼熟,它经常出现在以下场合:Activity状态数据的保存与恢复涉及到的两个回调:void onSaveInstanceState (Bundle outState)、void onCreate (Bundle savedInstanceState)Fragment的setArguments方法:void setArgumen原创 2016-05-18 14:22:45 · 3641 阅读 · 1 评论 -
Android广播纪要
Android广播机制是一种组件间传递消息的方式,支持同一进程及跨进程通信,底层实现基于Binder。广播机制是一种基于消息发布和订阅的事件驱动模型,因此需要注册广播接收者即Broadcast Receiver,注册方式分为静态注册(在Manifest文件中配置)与动态注册(在Activity或Service里代码实现),同等条件下,动态注册的广播接收者比静态注册的优先接收到广播。广播接收者被注册到原创 2016-06-03 14:49:44 · 717 阅读 · 0 评论 -
Messenger进程间通信及其原理
前言之前分析Android消息机制的源码时,曾遇到过replyTo、IMessenger等属性字段,当时只是说这些字段用于进程间通信,并未作深入分析。今天这篇文字就来演示一下使用Messenger如何进行进程间通信并分析其源码实现。Messenger进程间通信的流程Messenger顾名思义,即信使,那么它的作用就是满足不同进程两边的通信需要了。通常我们会写AIDL来实现进程间通信,其实简单的IPC原创 2016-09-30 16:14:54 · 1305 阅读 · 0 评论 -
Android Window纪要
Window概念理解在Andriod开发中经常提到Activity和View,而位于它们之间的Window却较少涉及。Window所表示的是一个抽象的概念,实际上所有View都是依附于Window之上的,包括Activity中的视图、Dialog中的视图以及Toast中的视图。另外View的事件分发也是由Window传递给View的。Window的管理Window是一个抽象类,其具体实现为Phone原创 2017-01-19 09:40:12 · 789 阅读 · 0 评论 -
Android Instrumentation源码分析(附Activity启动流程)
Instrumentation概念官方说明Instrumentation类位于android.app包中,继承自java.lang.Object,一些测试用类如InstrumentationTestRunner或MultiDexTestRunner直接或间接继承自该类。官方对于该类的解释如下: Base class for implementing application instrumenta原创 2017-02-09 22:48:27 · 6594 阅读 · 1 评论 -
Android Choreographer
引言之前其实并未关注过Choreographer,在一次调试App demo的过程中,偶然发现出现了一条这样的日志: I/Choreographer: Skipped 1201 frames! The application may be doing too much work on its main thread.这是一条系统日志,意思很明确:主线程的工作可能过多,导致了掉帧。突然发现Ch原创 2017-11-01 18:42:06 · 3570 阅读 · 0 评论