Android学习指南 — Android基础知识汇总,移动开发入门书籍

主要用于实现一些不规则的效果,静态或者动态地显示一些不规则的图形,即重写方法 。采用这种方式需要自己支持 ,并且也需要自己处理 。
主要用于实现自定义布局 , 采用这种方式需要合适地处理的测量、布局两个过程 , 并同时处理子元素的测量和布局过程 。
用于扩张某种已有的View的功能
用于扩张某种已有的的功能
进程
==
进程() 是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位 , 是操作系统结构的基础 。
当某个应用组件启动且该应用没有运行其他任何组件时, 系统会使用单个执行线程为应用启动新的 Linux 进程 。默认情况下,同一应用的所有组件在相同的进程和线程(称为“主”线程)中运行 。
各类组件元素的清单文件条目、、和
—均支持 : 属性,此属性可以指定该组件应在哪个进程运行 。
进程生命周期
1、前台进程
2、可见进程
3、服务进程
4、后台进程
5、空进程
多进程
如果注册的四大组件中的任意一个组件时用到了多进程,运行该组件时,都会创建一个新的对象 。对于多进程重复创建这种情况,只需要在该类中对当前进程加以判断即可 。
class{
@
void () {
Log.d(“”, (.os..myPid()));
super.();
/**
*/
(int pid){
am = ()(.);
List= am.es();
if ( == null) {
null;
for (.o: ) {
if (.pid == pid) {
.;
null;
一般来说 , 使用多进程会造成以下几个方面的问题:
进程存活
| ADJ级别 | 取值 | 解释 |
| — | — | — |
|| 16 | 一般指将要会缓存进程,无法获取确定值 |
|| 15 | 不可见进程的adj最大值 |
|| 9 | 不可见进程的adj最小值 |
|| 8 | B List 中的 (较老的、使用可能性更?。?|
|| 7 | 上一个App的进程(往往通过按返回键) |
|| 6 | Home进程 |
|| 5 | 服务进程( ) |
|| 4 | 后台的重量级进程,//init.rc 文件中设置 |
|| 3 | 备份进程 |
|| 2 | 可感知进程,比如后台音乐播放 |
|| 1 | 可见进程( ) |
|| 0 | 前台进程( ) |
| DJ | -11 | 关联着系统或进程 |
|| -12 | 系统进程,比如 |
|| -16 | 系统进程 |
|| -17 | 进程(不被系统管理) |
进程被杀情况
进程保活方案
【Android学习指南 — Android基础知识汇总,移动开发入门书籍】 接口
=============
只要实现了接口,一个类的对象就可以实现序列化并可以通过和传递 。
使用示例
.os.;
.os.;
class User{
int ;
User( in) {
= in.();
final= new () {
@
User ( in) {
new User(in);
@
User[] (int size) {

Android学习指南 — Android基础知识汇总,移动开发入门书籍

文章插图
new User[size];
};
@
int () {
0;
@
void ( dest, int flags) {
dest.();
int () {
;
方法说明
内部包装了可序列化的数据,可以在中自由传输 。序列化功能由方法完成,最终是通过中的一系列 write 方法完成 。反序列化功能由来完成,通过的一系列 read 方法来完成反序列化过程 。
| 方法 | 功能 |
| — | — |
| ( in) | 从序列化后的对象中创建原始对象 |
| (int size) | 创建指定长度的原始对象数组 |
| User( in) | 从序列化后的对象中创建原始对象 |
| ( dest, int flags) | 将当前对象写入序列化结构中,其中 flags 标识有两种值:0 或者 1 。为 1 时标识当前对象需要作为返回值返回 , 不能立即释放资源,几乎所有情况都为 0 |
|| 返回当前对象的内容描述 。如果含有文件描述符 , 返回 1,否则返回 0 , 几乎所有情况都返回 0 |
与对比
IPC
===
IPC 即 Inter-(进程间通信) 。基于 Linux,而 Linux 出于安全考虑,不同进程间不能之间操作对方的数据,这叫做“进程隔离” 。
在 Linux 系统中 , 虚拟内存机制为每个进程分配了线性连续的内存空间,操作系统将这种虚拟内存空间映射到物理内存空间 , 每个进程有自己的虚拟内存空间,进而不能操作其他进程的内存空间,只有操作系统才有权限操作物理内存空间 。进程隔离保证了每个进程的内存安全 。
IPC方式
| 名称 | 优点 | 缺点 | 适用场景 |
| — | — | — | — |
|| 简单易用 | 只能传输支持的数据类型 | 四大组件间的进程间通信 |
| 文件共享 | 简单易用 | 不适合高并发场景,并且无法做到进程间即时通信 | 无并发访问情形,交换简单的数据实时性不高的场景 |
| AIDL | 功能强大,支持一对多并发通信,支持实时通信 | 使用稍复杂,需要处理好线程同步 | 一对多通信且有 RPC 需求 |
|| 功能一般,支持一对多串行通信,支持实时通信 | 不能很处理高并发清醒,不支持 RPC,数据通过进行传输,因此只能传输支持的数据类型 | 低并发的一对多即时通信,无RPC需求,或者无需返回结果的RPC需求 |
|| 在数据源访问方面功能强大,支持一对多并发数据共享,可通过 Call 方法扩展其他操作 | 可以理解为受约束的 AIDL,主要提供数据源的 CRUD 操作 | 一对多的进程间数据共享 |
|| 可以通过网络传输字节流,支持一对多并发实时通信 | 实现细节稍微有点烦琐,不支持直接的RPC | 网络数据交换 |
是中的一个类,实现了接口 。从 IPC 角度来说, 是中的一种扩进程通信方方式 。从应用层来说, 是客户端和服务器端进行通信的媒介,当的时候,服务端会返回一个包含了服务端业务调用的对象 。
相较于传统 IPC 来说更适合于系统,具体原因的包括如下三点:
示例&