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

网站建设优质公司网站维护指导

网站建设优质公司,网站维护指导,怎么把做的网站发到网上去,开发公司工程部文章目录 Android 开机动画的启动过程BootAnimation(基于Android10.0.0-r41)1.开机动画的启动过程概述2.为什么设置了属性之后就会播放? Android 开机动画的启动过程BootAnimation(基于Android10.0.0-r41) 1.开机动画的启动过程概述 下面就是BootAnimation的重要部…

文章目录

  • Android 开机动画的启动过程BootAnimation(基于Android10.0.0-r41)
    • 1.开机动画的启动过程概述
    • 2.为什么设置了属性之后就会播放?

Android 开机动画的启动过程BootAnimation(基于Android10.0.0-r41)

1.开机动画的启动过程概述

下面就是BootAnimation的重要部分。

开机动画主要跟三个东西有关系

bootanimation surfaceflinger init

在这里插入图片描述

查看下Android.bp编译文件,cc_binary就是我们编译出来的可执行文件

在这里插入图片描述

最终的输出路径是在

在这里插入图片描述

系统启动的第一个进程是init,init进程会根据init.rc配置启动surfaceflinger进程。就是下面这个.rc进程

在这里插入图片描述

但是此时的Bootanim.rc不会启动。是disabled。

在这里插入图片描述

一般一个进程启动了,都会有一个对应的main方法。

路径frameworks/native/services/surfaceflinger

在这里插入图片描述

int main(int, char**) {signal(SIGPIPE, SIG_IGN);hardware::configureRpcThreadpool(1 /* maxThreads */,false /* callerWillJoin */);startGraphicsAllocatorService();// When SF is launched in its own process, limit the number of// binder threads to 4.ProcessState::self()->setThreadPoolMaxThreadCount(4);// start the thread poolsp<ProcessState> ps(ProcessState::self());ps->startThreadPool();// instantiate surfaceflinger//创建对象sp<SurfaceFlinger> flinger = surfaceflinger::createSurfaceFlinger();setpriority(PRIO_PROCESS, 0, PRIORITY_URGENT_DISPLAY);set_sched_policy(0, SP_FOREGROUND);// Put most SurfaceFlinger threads in the system-background cpuset// Keeps us from unnecessarily using big cores// Do this after the binder thread pool initif (cpusets_enabled()) set_cpuset_policy(0, SP_SYSTEM);// initialize before clients can connect//执行init方法flinger->init();// publish surface flingersp<IServiceManager> sm(defaultServiceManager());sm->addService(String16(SurfaceFlinger::getServiceName()), flinger, false,IServiceManager::DUMP_FLAG_PRIORITY_CRITICAL | IServiceManager::DUMP_FLAG_PROTO);startDisplayService(); // dependency on SF getting registered abovestruct sched_param param = {0};param.sched_priority = 2;if (sched_setscheduler(0, SCHED_FIFO, &param) != 0) {ALOGE("Couldn't set SCHED_FIFO");}// run surface flinger in this thread//执行run方法flinger->run();return 0;
}

首先进入init方法
在这里插入图片描述

开启一个线程,Start()之后这个线程就运行起来了。

在这里插入图片描述

线程run起来

在这里插入图片描述

bootanim设置属性,控制bootanim的一个服务要启动起来,就是这里设置属性之后就会起来了,就开始播放开机动画。

property_set("service.bootanim.exit", "0");// Start BootAnimation if not startedproperty_set("ctl.start", "bootanim");

2.为什么设置了属性之后就会播放?

/system/core/init.cpp

启动属性服务

在这里插入图片描述

在这里插入图片描述

跨进程通信CreateSocket

void StartPropertyService(Epoll* epoll) {selinux_callback cb;cb.func_audit = SelinuxAuditCallback;selinux_set_callback(SELINUX_CB_AUDIT, cb);property_set("ro.property_service.version", "2");//获取fdproperty_set_fd = CreateSocket(PROP_SERVICE_NAME, SOCK_STREAM | SOCK_CLOEXEC | SOCK_NONBLOCK,false, 0666, 0, 0, nullptr);if (property_set_fd == -1) {PLOG(FATAL) << "start_property_service socket creation failed";}//监听fd句柄listen(property_set_fd, 8);if (auto result = epoll->RegisterHandler(property_set_fd, handle_property_set_fd); !result) {PLOG(FATAL) << result.error();}
}

回调方法handle_property_set_fd,然后调用下面这个方法

在这里插入图片描述

然后进到HandleControlMessage,此时我们发现这个方法不知道是哪个头文件引入进来的,所以得搜索一下。

递归搜索当前目录以及子目录。

grep "HandleControlMessage"  ./ -rn

在这里插入图片描述

通过名字查找服务,也就是前面设置的属性值bootanim

找到对应的map,根据msg获取服务的状态是什么样子的,然后根据name名字去找到对应设置的服务。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

绘制图像需要依赖surfaceflinger来绘制,所以开机动画是在surfaceflinger之后启动的。

init启动。surfaceflinger进程的init执行,然后StartPropetySetThread线程的启动,然后再通知init进程启动开机动画进程,然后是bootanimation的main方法执行,

http://www.yayakq.cn/news/135102/

相关文章:

  • 网站推广怎么做优化树莓派3 部署wordpress
  • 如何建设农业推广网站做网站推销自己的产品这可行吗
  • 微信的企业网站模板电子商务网站后台功能
  • 大型购物网站建设方案企业建站怎么选择
  • 怎样写网站描述网站设计网页主页介绍
  • 公司seo排名优化东莞seo优化平台
  • 建设网站要做的工作内容网络营销销售方式
  • 网站设计模板之家网站的竞品分析怎么做
  • 环保企业的网站怎么做计算机专业论文网站开发
  • 做资源教程网站天津建设工程投标信息
  • google建设网站赚钱企业网站 seo怎么做
  • 如何做影视剧网站wordpress用户名是哪个文件
  • 东莞比较出名的网站建设公司免费织梦网站源码下载
  • 山西网络公司网站建设cms网站搭建好了再怎么做
  • 网站建设入账哪个科目wordpress建站 外贸
  • 三明网站开发自贡公司做网站
  • 做网站教程 简书wordpress评论嵌套样式修改
  • 简单网站建设培训中心WordPress后台管理主题
  • 网站备案号申请流程wordpress.怎么备份
  • 中企视窗做网站怎么样产品网页设计教程
  • 检察机关加强网站建设云南软件开发项目管理
  • 做淘宝店和做网站2021年最新热点素材
  • 网站空间如何备份怎样选择网站服务器
  • 2012r2网站建设wordpress 分享实现
  • 网站建设吉金手指专业13做一款小说网站
  • 平顶山网站建设电话网站备案哪个局管
  • 柳州住房城乡建设厅官方网站wordpress如何设置404页面
  • 长春市网站建设网站怎样做网银支付
  • 简述网站开发基本流程图上海模板网站公司
  • 静态网站素材申请网站价格