android私有进程和,Android(私有,公有)进程,系统中的进程管理

Android中有多种进程:前台进程,可见进程,服务进程,后台进程,空进程。

-- Android将进程分为6个等级,它们按优先级顺序由高到低依次是:

1.前台进程( FOREGROUND_APP)

2.可视进程(VISIBLE_APP )

3. 次要服务进程(SECONDARY_SERVER )

4.后台进程 (HIDDEN_APP)

5.内容供应节点(CONTENT_PROVIDER)

6.空进程(EMPTY_APP)

> Android私有进程和公有进程的区别:

私有进程,android:process=":remote",以冒号开头,冒号后面的字符串原则上是可以随意指定的。如果我们的包名为“com.biyou.multiprocess”,则实际的进程名 为“com.biyou.multiprocess:remote”。这种设置形式表示该进程为当前应用的私有进程,其他应用的组件不可以和它跑在同一个进程中。

进程名称不以“:”开头的进程都可以叫全局进程,如android:process="com.secondProcess",以小写字母开头,表示运行在一个以这个名字命名的全局进程中,其他应用通过设置相同的ShareUID可以和它跑在同一个进程。

如果需要将某些组件(如Service,Activity等)运行在单独的进程中,就需要用到android:process属性了。我们可以给android的组件设置android:process属性来使其运行在指定的进程中。

AndroidMantifest.xml中的activity、service、receiver和provider均支持android:process属性,设置该属性可以使每个组件均在各自的进程中运行,或者使一些组件共享一个进程;

AndroidMantifest.xml中的application元素也支持android:process属性,可以修改应用程序的默认进程名(默认值为包名)

-- Android App进程中最少有几个线程,在ART上最少八个线程:

1"Binder_1"@4,098 in group "main": RUNNING

//就是我们的ApplicationThread,这个类实现了IBinder接口,用于进程间通信。具体来说,是我们的应用程序和Ams通信的工具。

2 "Binder_2"@4,099 in group "main": RUNNING

就是我们的ViewRoot.W对象,它也是实现了IBinder接口,是用于我们的应用程序和Wms通信的工具。

3 "FinalizerDaemon"@4,095: WAIT

4"FinalizerWatchdogDaemon"@4,096: WAIT

5"HeapTaskDaemon"@4,097: MONITOR

6"main"@4,092 in group "main": SLEEPING //UI线程

7"ReferenceQueueDaemon"@4,094: WAIT

8 "Signal Catcher"@4,093: WAIT

> Android 进程管理

-- 进程管理

Android系统中的进程管理:进程的创建-- http://qiangbo.space/2016-10-10/AndroidAnatomy_Process_Creation/

对于Android来说,进程管理的主要内容包括以下几个部分内容:

1.进程的创建;

2.进程的优先级管理;

3.进程的内存管理;

4.进程的回收和死亡处理;

-- 进程的优先级

Android系统中的进程管理:进程的优先级-- http://qiangbo.space/2016-11-23/AndroidAnatomy_Process_OomAdj/

在Android系统中,进程的优先级影响着以下三个因素:

1.当内存紧张时,系统对于进程的回收策略

2.系统对于进程的CPU调度策略

3.虚拟机对于进程的内存分配和垃圾回收策略

在如下一些情况下,系统会对所有应用进程的优先级进行更新:

1.当有一个新的进程启动时;

2.当有一个进程退出时;

3.当系统在清理后台进程时;

4.当有一个进程被标记为前台进程时;

5.当有一个进程进入或者退出cached状态时;

6.当系统锁屏或者解锁时;

7.当有一个Activity启动或者退出时;

8.当系统正在处理一个广播事件时;

9.当前台Activity发生改变时;

10.当有一个Service启动时;

-- 进程的内存的回收

Android系统中的进程管理:内存的回收-- http://qiangbo.space/2016-12-08/AndroidAnatomy_Process_Recycle/

对于内存回收,主要可以分为两个层次:

1.进程内的内存回收:通过释放进程中的资源进行内存回收;

2.进程级的内存回收:通过杀死进程来进行内存回收;

这其中,进程内的内存回收主要分为两个方面:

1.虚拟机自身的垃圾回收机制;

2.在系统内存状态发生变化时,通知应用程序,让开发者进行内存回收;

而进程级的内存回收主要是依靠系统中的两个模块,它们是:

1.Linux OOM Killer;

2.LowMemoryKiller;

垃圾回收的基本想法是要找出虚拟机中哪些对象已经不会再被使用然后将其释放。其最常用的算法有下面两种:

1.引用计数算法;

2.对象追踪算法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值