首页 文章 精选 留言 我的
优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/176802

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

《Android的设计与实现:卷I》——第3章 3.4.5解析Action

3.4.5 解析Action 1.parse_action 解析Action首先从parse_action函数开始,代码如下:static void parse_action(struct parse_state state, int nargs, charargs){ struct action act; ……//省略错误处理内容 act = calloc(1, sizeof(act)); act->name = args[1]; list_init(&act->commands); /将Action的指针节点放入action_list中/ list_add_tail(&action_list, &act->alist); return act;}从parse_action函数的代码可以看出,解析Action的过程与解析Service的过程十分相似。首先给新创建的Action分配存储空间,然后将Action的指针节点放入一个action_list列表中。这里又涉及两个重要的数据类型:action结构体和action_list链表。action...

《Android的设计与实现:卷I》——第3章 3.6init循环监听处理事件

3.6 init循环监听处理事件 init触发所有Action后,便进入一个无限循环,在这个无限循环里首先执行两条指令:execute_one_command()和restart_processes()。其中execute_one_command()已经分析过,用来启动Action和Service;restart_processes()也容易理解,就是重启这些Action和Service。此后便在init中调用了系统函数poll等待一些事件发生,代码如下:nr = poll(ufds, fd_count, timeout);//poll返回……//省略部分内容for (i = 0; i < fd_count; i++) {//轮询这几个Socket if (ufds[i].revents == POLLIN) {//可读事件 /如果可读事件发生在property fd这个Socket上,便执行handle_property_set_fd 函数/ if (ufds[i].fd == get_property_set_fd()) handle_property_set_fd(); e...

相关文章

发表评论

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。