当前位置: 首页 > wzjs >正文

从信息化建设办公室网站高考志愿网站开发

从信息化建设办公室网站,高考志愿网站开发,前端网页,动漫制作专业专升本对应的专业Android 的 AMS(Activity Manager Service)是 Android 系统中的核心服务之一,负责管理整个应用生命周期、任务栈、进程和四大组件(Activity、Service、BroadcastReceiver、ContentProvider)的运行。它运行在系统进程 s…

Android 的 AMS(Activity Manager Service)是 Android 系统中的核心服务之一,负责管理整个应用生命周期、任务栈、进程和四大组件(Activity、Service、BroadcastReceiver、ContentProvider)的运行。它运行在系统进程 system_server 中,是 Android Framework 层的关键服务。

1 AMS 的基本职责

AMS 是 Framework 层的一个系统服务,作用相当于整个应用生命周期的大管家,主要负责

主要功能说明
Activity 生命周期管理启动、暂停、停止、销毁 Activity
进程管理创建、绑定、终止应用进程
Service 管理启动、绑定、停止服务
Broadcast 管理注册、发送、分发广播
任务栈管理管理多个任务栈(Task)和返回栈(Back Stack)
ANR 检测监控是否发生 ANR(Application Not Responding)
权限检查检查组件是否具有相应权限

2 AMS 所在的位置和通信机制

AMS 是 Java 层的一个单例类,android.app.ActivityManagerService。它运行在 system_server 进程中,系统启动时由 SystemServer.java 初始化。

AMS 使用 Binder IPC 机制 与应用程序通信。应用程序通过 ActivityManager、ActivityTaskManager 等接口与 AMS 通信,AMS 接收到请求后执行相应操作。

AMS 是通过 ServiceManager 向系统注册的,其他模块可以通过 ServiceManager.getService(“activity”) 获取其 Binder 接口。

3 AMS 启动流程

3.1 系统启动阶段

  • init → zygote 启动
  • zygote 通过反射启动 system_server
  • SystemServer.main() → startBootstrapServices() → ActivityManagerService.main()

3.2 AMS 初始化

  • 实例化 ActivityManagerService
  • 调用 setSystemProcess() 将 AMS 注册到 ServiceManager
  • 调用 mSystemServiceManager.startService(ActivityManagerService.Lifecycle.class) 启动

4 Activity 启动流程与 AMS 的作用

假设你调用 startActivity(),AMS 的工作过程如下:

应用进程调用 startActivity()
→ 通过 Instrumentation → ActivityTaskManager → 跨进程调用 AMS。

AMS 收到请求
→ 调用 ActivityStackSupervisor 查找/创建对应的 Task。
→ 如果目标 Activity 不在当前进程,AMS 启动新的应用进程(使用 Zygote 机制)。

进程启动完成后
→ AMS 通知应用进程执行 ActivityThread.performLaunchActivity(),从而真正执行 Activity 的生命周期方法(如 onCreate())。

5 AMS 相关重要类和模块

简要说明
ActivityManagerService核心管理类,负责调度 Activity、Service、广播等
ActivityTaskManagerServiceAndroid 10 后分离出的任务栈管理服务,与 AMS 协作
ActivityStackSupervisor管理任务栈与 Activity 栈(栈结构管理)
ActivityStarter负责启动 Activity 的执行策略
ProcessRecord表示一个应用进程的运行状态
ApplicationThread应用进程端的 Binder 接口,AMS 通过它和应用交互
ActivityThread应用进程中的主线程类,负责真正执行生命周期方法

6 AMS 管理 Service 的流程

启动 Service 的流程:

  • Context.startService() → Binder 调用 AMS 的 startService()
  • AMS 查找目标 Service 所在进程是否存在,不存在则先启动进程
  • 创建或复用 Service 实例,调用其 onCreate() 和 onStartCommand()
  • 绑定 Service 的流程:
  • Context.bindService() → AMS 的 bindService()
  • AMS 管理连接信息,维护客户端和服务端的绑定关系
  • 应用进程收到回调,执行
  • onServiceConnected() 方法

7 AMS 与进程管理

AMS 维护所有应用的进程信息,并负责:

  • 启动进程:通过 Zygote fork
  • 回收进程:当内存不足时,杀掉优先级低的进程(如空进程)
  • 监控进程状态:如是否运行、是否发生 ANR、是否处于前台等

AMS 使用 ProcessList 维护所有进程的信息,每个进程对应一个 ProcessRecord。

8 AMS 与 ANR

AMS 会检测应用的响应时间:

  • 主线程在 5 秒内没有响应 Input 或 Binder 请求
  • Service 执行时间超过 20 秒
  • BroadcastReceiver 超过 10 秒(前台)或 60 秒(后台)

AMS 会记录调用栈信息,并将错误写入 traces.txt,所以平时开发中如果碰到ANR,我们首先要想到的就是取分析traces.txt日志。里面会打印ANR发生时候的多个线程的调用堆栈。

AMS的总体运行逻辑

在这里插入图片描述

Q&A

ContentProvider常用于什么场景?

场景说明
不同应用间的数据共享App A 想访问 App B 的数据,App B 提供 ContentProvider 暴露接口
统一封装本地数据访问接口统一访问数据库(SQLite)、文件、网络等数据源,对外提供统一接口
系统数据访问系统提供的内容如联系人、短信、图片等,都通过 ContentProvider 对外提供
数据观察机制可通过 ContentObserver 监听数据变化,实现实时更新 UI
配合 CursorAdapter、Loader 等使用特别适合用于大量数据分页加载和懒加载场景

AMS运行在系统进程 system_server 中,是 Android Framework 层的关键服务。这句话是不是有问题,AMS不是单独一个进程吗?

AMS(ActivityManagerService)是 Android Framework 层的一个核心服务类,它本身运行在系统进程 system_server 中,不是单独的一个进程。

具体来说,system_server 是一个进程,Android 启动时,Zygote 进程通过 fork() 创建了 system_server 进程。system_server 进程负责承载 Android Framework 层的各种系统服务。

而AMS 是 system_server 中的一个 Java 类(单例),ActivityManagerService 是一个 Java 类,不是进程。它在 system_server 进程中被实例化,并通过 ServiceManager 注册为名为 “activity” 的服务。

其他组件(包括 App 进程)通过 Binder 调用这个服务。

AMS运行在 system_server 进程中,这个进程还包含很多其他系统服务。
下面是列出的一些例子:

系统服务所属进程说明
ActivityManagerService(AMS)system_server管理 Activity 和应用进程
WindowManagerService(WMS)system_server管理窗口和界面显示
PackageManagerService(PMS)system_server管理应用包信息(安装、卸载等)
SurfaceFlingersurfaceflinger图形渲染服务,独立于 system_server 运行

持续更新中。。。


文章转载自:

http://vTeueTB5.bscsp.cn
http://a0hGxeRv.bscsp.cn
http://BmDFWEEw.bscsp.cn
http://7W4VeTWQ.bscsp.cn
http://GpnWJIRW.bscsp.cn
http://uhGD3DYr.bscsp.cn
http://joAC5wZy.bscsp.cn
http://qo0q2bGD.bscsp.cn
http://MkJKKBz8.bscsp.cn
http://VN79m23H.bscsp.cn
http://0QgWdQqp.bscsp.cn
http://KdA1qrqT.bscsp.cn
http://ihfNIZJE.bscsp.cn
http://YJyNC1uJ.bscsp.cn
http://kdC5PVcv.bscsp.cn
http://XxyGBEBq.bscsp.cn
http://3LK0PsiD.bscsp.cn
http://NOD1oS7g.bscsp.cn
http://gQfUvIJp.bscsp.cn
http://sArfoiak.bscsp.cn
http://BSjQzS1F.bscsp.cn
http://NqKqyf68.bscsp.cn
http://ZO61V2ma.bscsp.cn
http://R1q4dpWg.bscsp.cn
http://TAcpBeLU.bscsp.cn
http://Pzz3kKHt.bscsp.cn
http://Rl66F9Ox.bscsp.cn
http://kHoW4bPJ.bscsp.cn
http://fJ4dtENP.bscsp.cn
http://8zJVD1e0.bscsp.cn
http://www.dtcms.com/wzjs/755739.html

相关文章:

  • 专门做相声的网站某个网站seo分析实例
  • 做封面怎么把网站加上去企业宣传文案
  • 做策划的网站推广新媒体营销案例
  • 做网站多少钱google企业建站用什么主机
  • wordpress demo 导入寻找郑州网站优化公司
  • 网站建设的文本事例网页制作专业搜题
  • 学校网站建设要求wordpress js漏洞
  • WordPress多站点恢复做网站要服务器和什么软件
  • 网站群建设思路甘肃网站建设费用
  • 昆明公司做网站网站规划的解释
  • 苏州建设工程公司网站南昌定制网站开发费用
  • 手机网站制作的公司asp.net网站开发上
  • 网站建设合同 附件wordpress拖拽主题
  • 简述建立网站的步骤破解软件库合集资料网址大全
  • 橙色企业网站模板淄博搜索引擎优化
  • 英文书 影印版 网站开发辛集建设网站
  • 门户网站建设设计方案审核合格后由谁签字确认
  • 济宁网站建设招聘有没有做盗版电影网站犯罪的
  • 北京旅游外贸网站建设wordpress 打赏实现
  • 多语言企业网站开发做优化的网站
  • 网站开发运营工作总结国外最牛设计网站
  • 黄冈做网站的公司哪家好wordpress主题sleo
  • 网站的页脚wordpress 404判断
  • 靖江做网站的ssp网站怎么做
  • 定制型网站制作哪家好软件开发流程的五大步骤
  • 一流的高端企业网站食品网站模板下载
  • 互联网站产品开发的流程wordpress如何设置评论页面
  • 广州做贸易网站教育培训网站设计
  • 济南比较大的网站制作公司.net做网站实例 贴吧
  • 官方网站开发与定制电商产品推广方案范文