Android基础知识学习

时间:2023-03-08 23:24:59
Android基础知识学习

IPC  (Inter-Process Communication) 意思是:  进程间的通信,是指两个进程之间进行数据交换的过程。

Android中如何开启多进程呢?

只需要给四大组件(Activity、Service、Receiver、ContentProvider)在Android Menifest 中指定 android:process 属性即可。

Android基础知识学习

不同的进程组件拥有独立的虚拟机、Application以及内存空间,直观的理解相当于两个应用不同的UID。

不同进程中,存在内存中的数据是互不干扰的,对其他进程不会造成任何影响。

多进程造成的问题:
1、静态成员变量、单例模式等凡是存在内存中的数据完全失效
2、Application 会创建多次
3、线程同步完全失效

Intent 意图,意向

Intent组件虽然不是四大组件,但却是连接四大组件的桥梁,学习好这个知识,也非常的重要。

Intent是一种运行时绑定(runtime binding)机制,它能在程序运行的过程中连接两个不同的组件。通过Intent,你的程序可以向Android表达某种请求或者意愿,Android会根据意愿的内容选择适当的组件来响应。

Android基础知识学习

图 1-1 通过Intent进行通信

如果Activity1需要和Activity2进行联系,二者不需要直接联系,而是通过Intent作为桥梁。

Intent由以下各个组成部分:

  1. component(组件):目的组件
  2. action(动作):用来表现意图的行动
  3. category(类别):用来表现动作的类别
  4. data(数据):表示与动作要操纵的数据
  5. type(数据类型):对于data范例的描写
  6. extras(扩展信息):扩展信息
  7. Flags(标志位):期望这个意图的运行模式

Intent类型分为显式Intent(直接类型)、隐式Intent(间接类型)。官方建议使用隐式Intent。上述属性中,component属性为直接类型,其他均为间接类型。

相比与显式Intent直接指定活动,隐式Intnet则含蓄了许多,它并不明确指出我们想要启动哪一个活动,而是指定一系列更为抽象的action和category等信息,然后交由系统去分析这个Intent,并帮我们找出合适的活动去启动。

Data是用一个uri对象来表示的,uri代表数据的地址,属于一种标识符。通常情况下,我们使用action+data属性的组合来描述一个意图:做什么。

Dalvik VM基于寄存器而不是栈。

Android基础知识学习

Android设备启动时,Zygote是最先启动的进程之一,负责启动其他服务和加载Android框架所使用的程序库。然后作为每个Dalvik进程的加载器,通过复制自身进程副本(forking,分支)来创建进程,这种方式避免创建进程时消耗大量资源。Zygote第二大功能是,启动system_server,这个进程容纳了所有系统核心服务,特权运行。

属性设置过程;

Android基础知识学习

            图1-2 Android系统的property服务(属性设置原理)