上一页 1 2 3 4 5 6 7 8 ··· 13 下一页
摘要: 一 Media Service进程启动Init.rc中描述的service对应linux 的进程:Media进程定义:service media /system/bin/mediaserver class main user media group audio camera inet net_bt net_bt_admin net_bw_acct drmrpc ioprio rt 4servicemanager 进程定义:service servicemanager /system/bin/servicemanager class core user sys... 阅读全文
posted @ 2012-11-13 10:02 __Shadow 阅读(15915) 评论(1) 推荐(2) 编辑
摘要: 通过对Ril部分代码的流程大致分析,其中的设计思路还是很值得学习:在RIL_JAVA层:通过RILSender与RILReceiver两个线程提高程序并发处理能力:发送 和接收;RILSender消息循环可以同时为多个请求服务;RILRequest将请求与响应绑定;在RIL_CPP层:Event机制:通过事件机制动态的对外部请求调度和处理,异步请求/处理模式,提高程序并发处理能力;消息映射表:采用消息数组的形式减少代码中存在较多的分支;模块间通信:迪米特法则,采用简单一致的接口,注册回调的方式; Ril.cpp Reference-ril.c Atchannel.c之间 阅读全文
posted @ 2012-11-05 15:34 __Shadow 阅读(1367) 评论(0) 推荐(0) 编辑
摘要: 从modem传递来的网络端事件,通过readLoop线程处理: readLoop读取数据过程:static void *readerLoop(void *arg){ for (;;) { //从与modem通信设备端口读取数据 line = readline(); if (line == NULL) { break; } //处理数据 processLine(line); } onReaderClosed(); return NULL;}static void pr... 阅读全文
posted @ 2012-11-05 15:19 __Shadow 阅读(3239) 评论(0) 推荐(0) 编辑
摘要: Ril与modem的交互一 客户端的请求处理客户端请求从EventLoop通过dispatch传递到reference-ril.c中调用onRequest接口。 处理客户端请求:static void onRequest (int request, void *data, size_t datalen, RIL_Token t){ switch (request) { case RIL_REQUEST_DIAL: requestDial(data, datalen, t); break; ... 阅读全文
posted @ 2012-11-05 15:13 __Shadow 阅读(5372) 评论(0) 推荐(0) 编辑
摘要: 客户端请求处理和Event事件处理机制一 事件机制//ril_event.cppevent事件数据结构: struct ril_event { struct ril_event *next; struct ril_event *prev; int fd; //事件对应的设备文件句柄 int index; bool persist; struct timeval timeout; //事件超时处理时间 ril_event_cb func; //事件处理回调函数 void *param; //回调函数参数};相关对象: fd_set rea... 阅读全文
posted @ 2012-11-05 14:44 __Shadow 阅读(4357) 评论(0) 推荐(0) 编辑
摘要: rild进程rild进程 init.rc中描述: service ril-daemon /system/bin/rild class main socket rild stream 660 root radio socket rild-debug stream 660 radio system user root进程rild.c中:int main(int argc, char **argv){ const char * rilLibPath = NULL; const RIL_RadioFunctions *(*rilInit)(const stru... 阅读全文
posted @ 2012-11-05 12:00 __Shadow 阅读(10305) 评论(0) 推荐(1) 编辑
摘要: 通常实现双向链表的数据结构:struct list_node1{ struct list_node1 *next,*prev; type1 m1; type2 m2;};struct list_node2{ struct list_node2 *next,*prev; type1 m1; type2 m2;};……对于每一种数据结构都定义了其特定的实现链表的结构和对应的方法(add/del)操作链表; 但对于具有大量不同数据结构,都要使用链表的系统中,如果为每一种数据结构定义特定的结构,和操作方法,无疑使代码变得重复和臃肿,需要实现一种通用的双向链表方法,... 阅读全文
posted @ 2012-10-19 15:17 __Shadow 阅读(7304) 评论(0) 推荐(2) 编辑
摘要: Android为什么选择binderBinder (Android技术内幕): 在上面这些可供选择的方式中,Android使用得最多也最被认可的还是Binder机制。为什么会选择Binder来作为进程之间的通信机制呢?因为Binder更加简洁和快速,消耗的内存资源更小吗?不错,这些也正是Binder的优点。 当然,也还有很多其他原因,比如传统的进程间通信可能会增加进程的开销,而且有进程过载和安全漏洞等方面的风险,Binder正好能解决和避免这些问题。Binder主要能提供以下一些功能: 用驱动程序来推进进程间的通信。 通过共享内存来提高性能。 为进程请求分配每个进程的线程池。 ... 阅读全文
posted @ 2012-10-17 17:50 __Shadow 阅读(8050) 评论(0) 推荐(0) 编辑
摘要: android4.0在某应用中关闭其他应用程序:例如关闭打开的闹钟程序: String pakageName = "com.android.BBKClock"; ActivityManager activityMgr; activityMgr = (ActivityManager)mContext.getSystemService( Context.ACTIVITY_SERVICE); activityMgr.forceStopPackage(packageName);在应用AndroidManifest.xml中添加权限: application标签中加上: an... 阅读全文
posted @ 2012-10-15 19:47 __Shadow 阅读(9444) 评论(0) 推荐(0) 编辑
摘要: Android System Property一 System Property 代码中大量存在:SystemProperties.set()/SystemProperties.get();通过这两个接口可以对系统的属性进行读取/设置,顾名思义系统属性,肯定对整个系统全局共享。通常程序的执行以进程为单位各自相互独立,如何实现全局共享呢?System Properties是怎么一回事,又是如何实现的呢? 属性系统是android的一个重要特性。它作为一个服务运行,管理系统配置和状态。所有这些配置和状态都是属性。每个属性是一个键值对(key/value pair),其类型都是字符串。这些属性可能. 阅读全文
posted @ 2012-10-11 17:50 __Shadow 阅读(98154) 评论(3) 推荐(8) 编辑
上一页 1 2 3 4 5 6 7 8 ··· 13 下一页