android framework
honghong96
这个作者很懒,什么都没留下…
展开
-
Java : NIO
NIO实现IO多路复用,不用再为每个IO链接创建一个进程。 来看一下Server和Client端创建一个NIO连接并通信时各自需要做的步骤。 Server端: 1.创建NIO channels,由于是服务器端,用的是ServerSocketChannel。ServerSocketChannel serverSocketChannel = ServerSocketChannel.open();原创 2017-02-02 16:18:37 · 223 阅读 · 0 评论 -
Android: Binder
Binder概述Binder是一种Android实现的IPC,用于进程间通信。通常Linux系统提供好几种进程间通信的方式,比如 1) Message Queue :把进程之间通信用的message保存到内核中或者从内核中读取的方式。2) Shared Memory:进程间指定共享的内存,把需要传输的内容保存到相应的内存的方式3) Socket:Android中选择Binder为主要的IPC方式原创 2017-02-01 21:48:58 · 303 阅读 · 0 评论 -
Android: JNI
一、分析的文件路径./frameworks/base/media/java/android/media/MediaScanner.java./frameworks/base/media/jni/android_media_MediaScanner.cpp./frameworks/base/media/jni/android_media_MediaPlayer.cpp./frameworks/b原创 2017-02-01 21:48:05 · 248 阅读 · 0 评论 -
Linux,Android中如何查看内存
http://blog.csdn.net/hudashi/article/details/7050897查看kernel和app,framework等内存使用情况的步骤如下:1) 在kernel log中,可以看到被从内核中挖出去的CMA区域大小<6>[ 0.000000] Machine: Qualcomm Technologies, Inc. MSM 8916 MTP <6>[ 0转载 2017-02-01 21:44:38 · 1116 阅读 · 0 评论 -
cold plug创建节点过程(uevent)
uevent 和 ueventd 在init进程中负责创建dev节点。 一般在linux系统中提供mknod等方式创建dev节点,但Android由于安全等原因没有提供创建节点的方式。 取而代之的是在 ueventd 进程中通过如下两种方式创建dev node。 1. hot plug: 系统中通过ueventd动态生成dev node 2. cold plug: 根据已经定义好的信息在in原创 2017-02-01 21:36:44 · 575 阅读 · 0 评论 -
Android : Broadcast
Broadcast是Application之间交换数据最简单的一种方法。Broadcast组成部分Broadcast 功能,由发送Broadcast的Sender和接收的Receiver组成。 Sendor和Receiver没有直接的联系,所以这两个部分可以在一个Application内,也可以不再一个Application内。然后可以从Broadcast字面字面意思上也可以知道,Sendor和R转载 2017-02-01 21:33:45 · 3755 阅读 · 0 评论 -
Android 如何永久性开启adb 的root权限
adb 的root 权限是在system/core/adb/adb.c 中控制。主要根据ro.secure 以及 ro.debuggable 等system property 来控制。 默认即档ro.secure 为0 时,即开启root 权限,为1时再根据ro.debuggable 等选项来确认是否可以用开启root 权限。为此如果要永久性开启adb 的root 权限,有两种修改的方式: 1.转载 2017-02-01 21:31:56 · 791 阅读 · 0 评论 -
Camera HAL(Camera Preview)
看看Android系统,高通camera hal(camera3)当中camera preview数据是怎么从kernel一层一层传递,最终发给SurfaceView的。 高通的Camera HAL的module在QualcommCamera.cpp[android/hardware/qcom/camera/qcamera2/hal/wrapper] 这个Camera HAL被加载是在Cam原创 2017-02-22 23:00:05 · 4950 阅读 · 0 评论 -
Android 如何永久性开启adb 的root权限
adb 的root 权限是在system/core/adb/adb.c 中控制。主要根据ro.secure 以及 ro.debuggable 等system property 来控制。 默认即档ro.secure 为0 时,即开启root 权限,为1时再根据ro.debuggable 等选项来确认是否可以用开启root 权限。为此如果要永久性开启adb 的root 权限,有两种修改的方式: 1.转载 2017-01-27 14:54:13 · 26516 阅读 · 0 评论 -
Android5.0:zygote
zygote本身是一个Linux的Native应用程序,当init进程启动完毕之后,通过init.rc文件启动zygote并修改进程名字为zygote(frameworks/base/cmds/app_process/app_main.cpp文件)。它是一个deamon进程,启动VM,加载class和resource等。之后唯一的任务就是监听socket(/dev/socket/zygote这个是用原创 2017-02-01 21:50:09 · 225 阅读 · 0 评论 -
Android:dumpsys
比如#dumpsys diskstats会打印系统中内部存储设备的使用情况。 那这个dumpsys diskstats到底是从哪里打印存储设备的情况的呢? 先看一下dumpsys.cpp的main函数实现int main(int argc, char* const argv[]){ signal(SIGPIPE, SIG_IGN); sp<IServiceManager> sm原创 2017-02-01 21:51:05 · 291 阅读 · 0 评论 -
Android Framework:AIDL
AIDL(Android Interface Definition Language) 程序员可以利用AIDL来实现客户端和服务端的之间实现通信(IPC)。 看看下面的例子。本例创建两个apk应用,一个应用作为AIDL的服务提供方,而另外一个应用作为AIDL服务调用方。AIDL服务提供方首先进入服务提供方的工程,创建aidl文件。本例中,在com.myandroid.aidl包下定义了一个IMy原创 2017-02-01 21:51:46 · 591 阅读 · 0 评论 -
Android : Activity,Window and View.
看一下Activity是怎么通过View,Window等来用于自己的显示的。 上图是Activity的Lifecycle。 这里只想说一下按back键和按home键退出,重新打开一个activity的时候的流程。 第一次冷启动流程是:onCreate()->onStart()->onResume() 按Home键退出时:onPause()->onStop() 重新打开时:onStart()原创 2017-02-01 22:00:14 · 1947 阅读 · 0 评论 -
Android:输入系统(InputChannel)
http://blog.csdn.net/itleaks/article/details/27165657前面的“锤子快捷键”相关文章已经分析了输入事件的读取,处理,分发。我们知道事件的传递是以window为单位传递的,即server只负责将事件传递给某一个或者多个window,window然后再将事件传递给某一个具体的view。一个activity或者dialog对应一个window,但是事件只传转载 2017-02-01 21:59:16 · 2214 阅读 · 0 评论 -
android dalvik heap 浅析
android 系统中可以在prop中配置dalvik堆的有关设定。具体设定由如下三个属性来控制dalvik.vm.heapstartsize 堆分配的初始大小,调整这个值会影响到应用的流畅性和整体ram消耗。这个值越小,系统ram消耗越慢, 但是由于初始值较小,一些较大的应用需要扩张这个堆,从而引发gc和堆调整的策略,会应用反应更慢。 相反,这个值越大系统ram消耗越快,但是程序更流畅。转载 2017-02-01 21:57:23 · 454 阅读 · 0 评论 -
Android:ImageView
ImageView ImageView,图像视图,直接继承自View类,它的主要功能是用于显示图片,实际上它不仅仅可以用来显示图片,任何Drawable对象都可以使用ImageView来显示。ImageView可以适用于任何布局中,并且Android为其提供了缩放和着色的一些操作。ImageView的一些常用属性,并且这些属性都有与之对应的getter、setter方法:android:adju原创 2017-02-01 21:56:43 · 360 阅读 · 0 评论 -
Android Service生命周期及用法
Service概念及用途: Android中的服务,它与Activity不同,它是不能与用户交互的,不能自己启动的,运行在后台的程序,如果我们退出应用时,Service进程并没有结束,它仍然在后台运行,那 我们什么时候会用到Service呢?比如我们播放音乐的时候,有可能想边听音乐边干些其他事情,当我们退出播放音乐的应用,如果不用Service,我 们就听不到歌了,所以这时候就得用到Service原创 2017-02-01 21:55:54 · 446 阅读 · 0 评论 -
Android消息处理机制:Looper,MessageQueue,Handler
C++ LooperLooperLooper类[system/core/libutils/Looper.cpp]提供了pollOnce(),wake()函数来完成睡眠等待,唤醒。 可以搜一下的pollOnce()函数,有很多地方在用。InputDispatcher::dispatchOnce()[InputDispatcher.cpp]函数,MessageQueue::waitMessage()原创 2017-02-01 21:54:55 · 659 阅读 · 0 评论 -
Android graphic path
UI的画图流程中,先不管怎么填充要画的数据的,只是来看一下需要画到屏幕上的数据是通过怎样的流程最终传递到屏幕上的。这个流程都是UI获取并创建Surface并利用Cavans,Bitmap等画好之后,传递给SurfaceFlinger去Composite并传递给HWComposer去画到屏幕上的。根据Chris Simmonds关于graphic path的说明来具体看一。下http://elinux原创 2017-02-01 21:53:33 · 1811 阅读 · 0 评论 -
Android: 显示系统模块加载以及调用流程
打开/dev/graphics/fb0节点的过程:打开/dev/graphics/fb0这个设备的调用过程如下: 1.在HWComposer中,加载moduleHWComposer::HWComposer( const sp<SurfaceFlinger>& flinger, EventHandler& handler){ ... // No原创 2017-02-01 21:52:43 · 1235 阅读 · 0 评论 -
Android VSYNC详解
Android UI层的刷新界面数据和SurfaceFlinger将显示数据刷新到屏幕,都依赖VSYNC信号。VSYNC信号来自LCD模块,先看一下SurfaceFlinger加载LCD模块生成VSYNC信号回调到SurfaceFlinger的过程。void SurfaceFlinger::init() { ALOGI( "SurfaceFlinger's main th原创 2017-01-10 18:10:26 · 4459 阅读 · 0 评论