一些底层基本知识(Android篇二)

本文详细介绍了Android底层基础知识,包括Activity的启动过程、IPC中的Binder机制、View的工作原理以及Android线程和线程池管理。通过对Android系统组件的深入剖析,阐述了Activity如何启动、IntentFilter的匹配规则以及多种进程间通信方式,同时讨论了Bitmap的加载优化和Android性能优化策略。
摘要由CSDN通过智能技术生成

这篇着重记录一些Android偏底层的基本知识

Activity的工作原理

《Android开发艺术探索》

Android instrumentation原理 http://blog.csdn.net/a19891024/article/details/54342799

Activity的启动过程

简述: 启动Activity涉及到Instrumentation,ActivityThread,ActivityManagerService(AMS).

启动Activity的请求会由Instrumentation来处理,然后它通过Binder向AMS发送请求,AMS内部维护着一个ActivityStack并负责栈内的Activity的状态同步,AMS通过ActivityThread的scheduleLaunchActivity方法去同步Activity的状态从而完成生命周期方法的调用。

Instrumentation:

官方描述:

instrumentation can load both a test package and the application under test into the same process. Since the application components and their tests are in the same process, the tests can invoke methods in the components, and modify and examine fields in the components.

Instrumentation可以把测试包和目标测试应用加载到同一个进程中运行。既然各个控件和测试代码都运行在同一个进程中了,测试代码当然就可以调用这些控件的方法了,同时修改和验证这些控件的一些数据

Android instrumentation是Android系统里面的一套控制方法或者”钩子“。这些钩子可以在正常的生命周期(正常是由操作系统控制的)之外控制Android控件的运行,其实指的就是Instrumentation类提供的各种流程控制方法

一般在开发Android程序的时候,需要写一个manifest文件,其结构是:

<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".TestApp" android:label="@string/app_name">
……
</activity>
</application>

  
 
这样,在启动程序的时候就会先启动一个Application,然后在此Application运行过程中根据情况加载相应的Activity,而Activity是需要一个界面的。

但是Instrumentation并不是这样的。可以将Instrumentation理解为一种没有图形界面的,具有启动能力的,用于监控其他类(用Target Package声明)的工具类。

IntentFilter的匹配规则

隐式调用中,需要Intent能够匹配目标组件中的IntentFilter中所设置的过滤信息,如果不匹配将无法启动目标Activity.

为了匹配过滤列表,需要同时匹配过滤列表中的action,category,data信息,否则匹配失败。另外,一个Activity中可以有多个intent-filter,一个Intent只要能匹配任何一组intent-filter即可成功启动对应的Activity。

  1. action匹配规则

action是一个区分大小写的字符串,系统预定义了一些,我们也可以自己定义一些。一个过滤规则可以有多个action,但是只要intent中的action能够匹配任何一个action即匹配成功。

总结一下即:action的匹配要求Intent中的action存在且必须和过滤规则中的其中一个action相同。

  1. category匹配规则

和action一样,系统预定义了一些,我们也可以自定义一些。但匹配规则不同,它要求Intent中如果含有category,那么所有的category都必须和过滤规则中的其中一个category相同才匹配。

而且,和action不同的是,intent中的category可以为空,因为在intent-filter中系统自动加上了DEFAULT这个category用来匹配空值。

  1. data匹配规则

IPC机制

《Android开发艺术探索》

IPC是Inter-Process-Communication的缩写,含义为进程间通信或者跨进程通信,是指两个进程之间进行数据交换的过程。

在这里简单复习一下进程线程,具体参考上篇博客JAVA篇二。

按照操作系统中的描述,线程是CPU调度的最小单元,同时线程是一种有限的系统资源。而进程一般指一个执行单元,在PC和移动设备上值一个程序或者一个应用。一个进程可以包含多个线程,因此进程和线程是包含与被包含的关系。在最简单的情况下,一个进程中只有一个线程即主线程,在Android中主线程也叫UI线程,在UI线程里才能操作界面元素。

很多时候,一个进程中需要执行大量耗时的任务,如果这些任务放在主线程中去执行就会造成界面无法响应,严重影响用户体验,在Android中叫做ANR(Application

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值