Android开发艺术探索读书笔记
NoClay
立志成为一名段子手
展开
-
IPC机制--利用Messenger
为什么使用Messenger?Messenger是一种轻量级的IPC方案,它的底层实现是AIDL,同时由于一次只是处理一个请求,那么我们就不需要考虑线程同步的问题。怎样实现一个Messenger?1. 服务端进程我们需要在服务端简历一个Service来处理客户端的连接请求,同时创建一个Handler,并通过它来创建一个Messenger对象,然后在Service的onBind中返回这个Messeng原创 2017-02-27 14:13:54 · 277 阅读 · 0 评论 -
Android的消息机制概述
Android的消息机制概述Android的消息机制主要是指Handler的运行机制,Handler的运行需要底层的MessageQueue和Looper的支撑。MessageQue:消息队列,以队列的形式提供插入和删除的工作,内部利用单链表的数据结构来存储信息列表Looper:消息循环,无限循环的处理消息,没有则等待ThreadLocal:并不是线程,用来在不同的线程中互不干扰的存储并提供数据,通原创 2017-03-20 20:41:52 · 410 阅读 · 0 评论 -
View的事件体系
3.1 View基础知识3.1.1 什么是View我们在安卓中使用的各种View,如TextView和Button等等,其实都可以分为两类,一类是View,一类是ViewGroup,而ViewGroup内部可以嵌套子View,而子View可以是一个View,也可以是一个ViewGroup,同时需要注意的是ViewGroup继承自View。3.1.2 View的位置参数View具有四个位置属性: 1原创 2017-03-06 22:16:53 · 292 阅读 · 0 评论 -
IPC机制--BinderPool
当很多模块都需要AIDL来进行跨进程通信,我们不可能为每一个AIDL创建Sevice,因此,我们可以采用BinderPool来托管我们的其他进程间通信接口,通过一些请求码对不同的进程间通信接口加以区分,在进行指定的进程间通信的时候,先从BinderPool中取出对应的Binder,利用其进行通信即可。利用这个方法,避免了多次创建Service,以及对系统资源的滥用,我们来看下如何实现BinderPo原创 2017-03-02 17:22:18 · 385 阅读 · 3 评论 -
View的工作原理
引言:我们之前在View的事件体系提到了Window和DecorView,这两者是两个不同的概念,所以我们需要一个ViewRoot(对应于ViewRootImpl)作为纽带,实现View的三大流程,当Activity对象被创建完毕后,会将DecorView加载到Window中,同时创建ViewRootImpl对象,并将ViewRootImpl对象和DecorView产生关联。root = new V原创 2017-03-08 20:08:10 · 265 阅读 · 0 评论 -
IPC机制--使用Socket
本Demo的Git地址:https://github.com/NoClay/MessagerTest.git为什么使用Socket?Socket即“套接字”,是网络通信中的概念,分为流式套接字和用户数据报套接字两种,分别对应于网络传输控制层中的TCP和UDP协议,其中TCP是面向连接的协议,提供稳定的双向通信功能,为了提供稳定的数据传输功能,其本身提供了超时重传机制,具有极高的稳定性;但是UDP是无原创 2017-03-01 18:17:29 · 416 阅读 · 0 评论 -
IPC机制--利用ContentProvider
为什么使用ContentProvider?ContentProvider是Android中提供的专门用于不同应用间进行数据共享的方式,从这点来看,它天生就是为了进程间通信的,和Messenger一样,ContentProvider的底层实现同样是Binder。怎样使用ContentProvider?自定义ContentProvider需要实现以下几个方法: 方法名 含义 onCreate原创 2017-03-01 15:47:50 · 243 阅读 · 0 评论 -
Activity的生命周期和启动模式
1.1 Activity的生命周期解析1.1.1 典型情况下的生命周期在正常的情况下,Activity可能经历的生命周期: - onCreate:创建Activity,做初始化工作,包括setContentView加载界面资源 - onRestart:在Activity从不可见到可见的时候调用 - onStart:Activity正在启动,这个时候Activity已经可见了,但是没有在前台显示原创 2017-02-20 20:26:32 · 214 阅读 · 0 评论 -
IPC机制--利用AIDL
代码下载全部代码下载连接:http://download.csdn.net/download/qq_27035123/9765562为什么使用AIDL?我们之前使用Messenger实现了IPC,但是Messenger是一个接着一个处理的,对于大量的并发请求,那么用messenger就不太合适了,同时Messenger主要是为了传递消息,很多时候我们需要跨进程调用服务器的方法。怎么使用AIDL进程进原创 2017-02-27 19:36:57 · 259 阅读 · 0 评论 -
IPC机制--概述
什么是IPC?IPC是Inter-Process Communication的缩写,含义是进程间通信,指的是不同进程之间进行数据交换的过程。一个进程可以包含许多的线程,但是可以只有一个主线程(在Android里边叫作UI线程)。如何开启多进程模式?名义上Android的多进程模式的开启只需要一行代码,但随之产生的许多问题却需要我们来进行考虑,比如进程间的数据的共享,内存共享等,如下为开启多进程模式代原创 2017-02-26 16:11:41 · 525 阅读 · 0 评论 -
IPC机制--使用Bundle进行通信
为什么使用Bundle?四大组件中的三大组件(Activity, Service, Receiver)都支持在Intent传递Bundle数据,由于Bundle实现了Parcelable接口,所以可以十分方便的在进程间传输,当然我们传输的数据必须能够被序列化,比如基本类型、实现了Parcelable接口的对象、实现了Serializable接口的对象以及一些Android所支持的特殊对象。如何利用B原创 2017-02-26 21:23:16 · 408 阅读 · 0 评论 -
IPC机制--使用文件通信
为什么使用共享文件进行通信?共享文件是一种不错的进程间通信方式,两个进程通过读/写同一个文件来进行数据交换,由于Android系统基于Linux,使得并发读、写不受限制,所以这可能出问题,但是对于一些时效性要求不严格的进程通信,使用文件也是不错的方式。如何进行文件通信?1. 需要交换的数据可以序列化这里直接使用我们已经实现了Serializable和Parcelable接口的User作为例子2. 将原创 2017-02-26 21:56:50 · 877 阅读 · 0 评论 -
RemoteView的使用
版权说明文章原载于:天意博文本文在此基础上进行了部分修改。AppWidget想要完全的理解RetmoteViews必须要说明一下Android Widet。Android widget 也称为桌面插件,其是android系统应用开发层面的一部分。Android中的AppWidget与google widget和中移动的widget并不是一个概念,这里的AppWidget只是把一个进程的控件嵌入到别外原创 2017-08-01 15:07:46 · 4662 阅读 · 0 评论