- 博客(64)
- 资源 (1)
- 收藏
- 关注
转载 欢迎使用CSDN-markdown编辑器
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
2015-03-19 13:35:45
408
转载 经典SQL语句大全
经典SQL语句大全一、基础1、说明:创建数据库CREATE DATABASE database-name2、说明:删除数据库drop database dbname3、说明:备份sql server--- 创建 备份数据的 deviceUSE masterEXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql
2015-01-30 15:31:37
582
原创 《老罗的Android之旅》阅读笔记——应用程序窗口实现框架
Activity组件在启动完成后,会通过一个类型为Session的Binder对象来请求WindowManagerService为它创建一个类型为WindowState的对象,用来描述它的窗口状态Android应用程序会通过一个类型为Client的Binder对象来请求SurfaceFlinger服务为它创建一个类型为Layer的对象,用来描述它的窗口数据。Activity组件与Windo
2015-01-19 10:05:30
843
原创 《老罗的Android之旅》阅读笔记——SurfaceFlinger服务
Android应用程序请求SurfaceFlinger服务渲染自己的UI可以分为三步曲:首先是创建一个到SurfaceFlinger服务的连接,接着再通过这个连接来创建一个Surface,最后请求SurfaceFlinger服务渲染该Surface。根据SurfaceFlinger类的定义,得到: 1. SurfaceFlinger服务通过一个Gra
2015-01-14 17:33:02
1268
原创 《老罗的Android之旅》阅读笔记——应用程序与SurfaceFlinger服务的关系
SurfaceFlinger服务:运行在Android系统的System进程中,负责管理Android系统的帧缓冲区(Frame Buffer)。每一个Android应用程序与SurfaceFlinger服务都有一个连接,这个连接都是通过一个类型为Client的Binder对象来描述的。每一个Android应用程序与SurfaceFlinger服务之间的连接上加上一块用来传递UI元
2015-01-09 11:04:37
897
原创 《老罗的Android之旅》阅读笔记——开机画面显示过程&Gralloc模块
三个开机画面:第一个开机画面是在内核启动的过程中出现的,它是一个静态的画面。第二个开机画面是在init进程启动的过程中出现的,它也是一个静态的画面。第三个开机画面是在系统服务启动的过程中出现的,它是一个动态的画面。可视分辨率是屏幕实际上使用的分辨率,即用户所看到的分辨率,而虚拟分辨率是在系统内部使用的,它是不可见的,并且可以大于可视分辨率。通
2015-01-07 14:13:44
949
原创 《老罗的Android之旅》阅读笔记——Content Provider
Content Provider应用程序组件是:结合文件权限机制,来秉承这种有保护地开放自己的数据给其它应用程序使用的理念。基于Content Provider设计App的框架图如下:Content Provider 展示了Binder进程间通信机制(文件权限)和匿名共享内存机制(大量的数据)完美结合。系统中的Content Provider实例启动过程
2014-12-29 16:54:14
918
原创 《老罗的Android之旅》阅读笔记——线程消息处理模型
两个场景:在应用程序中创建一些常驻的子线程来不定期地执行一些不需要与应用程序界面交互的计算型的任务在应用程序中创建一些子线程来执行一些需要与应用程序界面进交互的计算型任务场景一解决方案:HandlerThread类,它可以创建具有消息循环功能的子线程。场景二解决方案:异步任务类(AsyncTask),它会在一个子线程中执行计算任务,同时通过主线程的消息循环来获得
2014-12-26 10:56:43
669
原创 《老罗的Android之旅》阅读笔记——消息处理机制(Looper、Handler)
系统为每一个应用程序维护一个消息队例,消息的发送和处理是一种异步处理机制,具体来说就是:把请求消息放入消息队列,然后由消息循环来处理消息。Android应用程序的消息处理机制由消息循环、消息发送和消息处理这三个部分组成。消息循环Android应用程序主线程进入到这个消息循环中,进入消息循环前要创建消息队列。消息队列初始化时有一个pipe概念,通过pipe系统的调用实现:
2014-12-24 10:27:02
1467
原创 《老罗的Android之旅》阅读笔记——键盘(Keyboard)消息处理机制
Android应用程序获得键盘按键消息的过程:InputManager的启动过程应用程序注册键盘消息接收通道的过程InputManager分发键盘消息给应用程序的过程应用程序注销键盘消息接收通道的过程InputManager的启动过程Android系统的键盘事件是由InputManager来监控的,而InputManager是由窗口管理服务WindowManagerServic
2014-12-24 10:17:49
1188
原创 《老罗的Android之旅》阅读笔记——Launcher和Zygote的启动过程
Launcher启动过程 系统中的应用程序安装好了以后,SystemServer组件接下来就通过ActivityManagerService来启动Home应用程序Launcher了,Launcher在启动的时候便会通过PackageManagerServic把系统中已经安装好的应用程序以快捷图标的形式展示在桌面上,这样用户就可以使用这些应用程序了,整个过程
2014-12-23 13:45:28
1145
原创 《老罗的Android之旅》阅读笔记——安装应用程序和应用程序进程启动的过程
Android应用程序框架层创建的应用程序进程具有两个特点:一是进程的入口函数是ActivityThread.main;二是进程天然支持Binder进程间通信机制。应用程序进程创建过程的序列图:应用程序管理服务PackageManagerService从启动到安装应用程序的过程如下图所示:这样应用程序就在PackageManagerSer
2014-12-22 15:01:30
786
原创 《老罗的Android之旅》阅读笔记——bindService
整个调用过程为MainActivity.bindService->CounterService.onCreate->CounterService.onBind->MainActivity.ServiceConnection.onServiceConnection->CounterService.CounterBinder.getService。服务绑定的过程序列图如下:Androi
2014-12-22 10:48:00
956
原创 《老罗的Android之旅》阅读笔记——广播(Broadcast)机制
使用广播的两个步骤:1. 广播的接收者需要通过调用registerReceiver函数告诉系统,它对什么样的广播有兴趣,即指定IntentFilter,并且向系统注册广播接收器,即指定BroadcastReceiver 2. 广播的发送者通过调用sendBroadcast函数来发送一个指定的广播,并且可以指定广播的相关参数广播的注册和发送的过程:虚线上面
2014-12-19 13:45:52
1123
原创 《老罗的Android之旅》阅读笔记——Activity启动过程
ActivityManagerService启动Activity的过程大致如下图所示:在这个图中,ActivityManagerService和ActivityStack位于同一个进程中,而ApplicationThread和ActivityThread位于另一个进程中。其中,ActivityManagerService是负责管理Activity的生命周期的,ActivityManager
2014-12-18 13:43:28
2741
原创 《老罗的Android之旅》阅读笔记——startService函数
ActivityManagerService的startService函数的处理流程如下图所示:它通过三次Binder进程间通信完成了服务的启动过程,分别是: 一. Step 1至Step 7,从主进程调用到ActivityManagerService进程中,完成新进程的创建; 二. Step 8至Step 11,从新进程调用到Activit
2014-12-17 15:07:21
838
转载 Android权限大全
本文来自百度文库,转来博客便于查阅!Android权限大全允许程序写入外部存储,如SD卡上写文件android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>录音android:name="android.permission.RECORD_AUDIO"/>允许编写短信android:name="
2014-12-16 16:36:47
1004
转载 AndroidManifest.xml文件详细介绍及用法解析
本文来自百度文库,转来博客便于查阅!AndroidManifest.xml文件详介绍及解析一、关于AndroidManifest.xmlAndroidManifest.xml是每个android程序中必须的文件。它位于整个项目的根目录,描述了package中暴露的组件(activities,services,等等),他们各自的实现类,各种能被处理的数据和启动位置。除了能
2014-12-16 16:31:01
1019
原创 《老罗的Android之旅》阅读笔记——匿名共享内存
匿名共享内存子系统Ashmem(Anonymous Shared Memory),以驱动程序的形式实现在内核空间中。有两个特点:一是能够辅助内存管理系统来有效地管理不再使用的内存块、二是它通过Binder进程间通信机制来实现进程间的内存共享。*.文件描述符其实就是一个整数,它是用来索引进程保存在内核空间的打开文件数据结构的,而且,这个文件描述符只是在进程内有效。
2014-12-16 10:05:46
1002
原创 《老罗的Android之旅》阅读笔记——IPC机制Binder
Binder真心复杂,看了两天好多内容没懂!决定再给自己一个星期的时间,加油!下面先简单整理下这两天看的内容:Android系统Binder机制中的四个组件Client、Server、Service Manager和Binder驱动程序的关系:Service Manager源代码路径:frameworks/base/cmds/servicemanager
2014-12-12 11:06:37
2949
原创 《老罗的Android之旅》阅读笔记——Log系统
在Android内核空间和用户空间中LOG的使用和查看方法内核开发时LOG的使用printk输出的日志信息保存在/proc/kmsg中用户空间程序开发时LOG的使用要使用C/C++日志接口,只要定义自己的LOG_TAG宏和包含头文件system/core/include/cutils/log.h就可以了要使用Java日志接口,只要在类中定义的LOG_TAG常量和引用androi
2014-12-10 15:11:38
886
原创 《老罗的Android之旅》阅读笔记——Android硬件抽象层
写在前面的话:快两个月没看书了,颓!决定拿起学习,但害怕失掉坚持,所以写个博客让坚持看得见,也算一种督促吧!加油!Android硬件抽象层硬件抽象层在Android系统中的位置,以及它和其它层的关系:内核驱动程序路径:kernel/common/drivers三种访问设备寄存器的方法:一是通过proc文件系统来访问,二是通过传统的设备文件的方法来访问,
2014-12-09 14:37:59
861
转载 android soundrecorder之三 录音流程及数据流向
前两篇文章分别介绍了linux alsa结构和android soundrecorder的应用层实现除了板级的初始过程,其他都是关于类层次关系的一些静态说明这章主要介绍下录音的动态过程,以及数据是如何一步步获取和保存的还是先上图:这个图大致介绍了soundrecord的流程,alsa到kernel部分还有个control模块这里没有画出来下面一张图里面会提到,实际上co
2014-08-06 19:48:16
1824
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅