随笔分类 -  Android FrameWork

摘要: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 阅读(9443) 评论(0) 推荐(0) 编辑
摘要:Android System Property一 System Property 代码中大量存在:SystemProperties.set()/SystemProperties.get();通过这两个接口可以对系统的属性进行读取/设置,顾名思义系统属性,肯定对整个系统全局共享。通常程序的执行以进程为单位各自相互独立,如何实现全局共享呢?System Properties是怎么一回事,又是如何实现的呢? 属性系统是android的一个重要特性。它作为一个服务运行,管理系统配置和状态。所有这些配置和状态都是属性。每个属性是一个键值对(key/value pair),其类型都是字符串。这些属性可能. 阅读全文
posted @ 2012-10-11 17:50 __Shadow 阅读(98107) 评论(3) 推荐(8) 编辑
摘要:一 Socket Socket最初用在基于TCP/IP网络间进程通信中,以客户端/服务器模式进行通信。实现异步操作,共享资源集中处理,提高客户端响应能力。Tcp通信基本流程: 服务器端 客户端 1.创建socket1.创建socket 2.bind() 3.listen() 4.accecp() ----等待客户端连接---- 2.connect() 5.读数据(recv)3.写数据(send) 6.写数据(send)4.读数据(recv) 7.关闭socket(closesocket()) 5.关... 阅读全文
posted @ 2012-10-09 16:55 __Shadow 阅读(61729) 评论(0) 推荐(5) 编辑
摘要:Zygote 接收客户端创建进程的请求,使用JNI调用linux fork函数创建进程。Zygote是在Init进程中作为Service被启动的。Zygote进程的主体是:ZygoteInit。 Zygote进程的启动可以参考前篇:Android系统启动过程 http://www.cnblogs.com/bastard/archive/2012/08/28/2660389.html系统启动过程如下图: 下面主要看看Zygote是如何进行工作的。一 Zygote工作流程主函数:public static void main(String argv[]) { …… /... 阅读全文
posted @ 2012-09-03 12:13 __Shadow 阅读(11576) 评论(1) 推荐(1) 编辑
摘要:Android系统启动过程首先Android框架架构图:(来自网上,我觉得这张图看起来很清晰) Linux内核启动之后就到Android Init进程,进而启动Android相关的服务和应用。启动的过程如下图所示:(图片来自网上,后面有地址) 下面将从Android4.0源码中,和网络达人对此的总结中,对此过程加以学习了解和总结,以下学习过程中代码片段中均有省略不完整,请参照源码。一 Init进程的启动 init进程,它是一个由内核启动的用户级进程。内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完... 阅读全文
posted @ 2012-08-28 16:18 __Shadow 阅读(77163) 评论(11) 推荐(12) 编辑
摘要:Android AsyncTask 在程序处理中必然会遇上耗时的操作,如访问网络,下载数据,访问数据库等,如何存在耗时的操作又不能影响界面显示交互。 在某些耗时可以控制的情况下,我们可以分批操作,对于事件循环执行;但有些情况如访问网络是没法控制的,处理过程属于被动的。这类情况通常都是放在一个新的线程里面执行。 Android中应用程序启动后运行在主线程中(UI线程),处理界面交互,控件事件派发,界面设置显示;这些元素只能在UI线程操作。故不能在UI线程中处理耗时的动作,影响界面流畅操作,而出现ANR。 耗时的数据处理操作都需要在新的线程中后台进行,基于线程的方式处理数据有很多形式:有S... 阅读全文
posted @ 2012-06-30 16:01 __Shadow 阅读(2114) 评论(0) 推荐(1) 编辑