![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android Deeping
Fate_I_C
这个作者很懒,什么都没留下…
展开
-
Activity中的onCreate(Bundle savedInstanceState)
在应用的功能清单文件中寻找与该意图匹配的意图过滤器,如果匹配成功,找到相匹配的意图过滤器所在的Activity元素,再根据元素的”name“属性来寻找其对应的Activity类,接着Android操作系统创建该Activity类的实例对象,对象创建完成之后,会执行到该类的onCreate方法,此onCreate方法是重写父类Activity的onCreate方法而实现的。onCreate方法用来初原创 2013-08-24 09:33:06 · 6755 阅读 · 0 评论 -
Android传感器学习五---实例
传感器的框架在package android.hardware。主要通过以下步骤:1、获得传感器管理对象 2、通过传感器管理对象的getDefaultSensor()获得传感器对象 3、注册传感器对象 4、传感器事件监听动作过程如下图:原创 2013-11-13 10:02:47 · 1313 阅读 · 0 评论 -
Android传感器学习三---Position Sensor
Android平台提供了两种用于判断设备位置的传感器:地磁场传感器和方向传感器。Android平台还提供一种判断设备的面板是否接近一个对象的传感器(即距离传感器)。地磁场传感器和距离传感器是基于硬件的。大多数手持设备和平板电脑制造商都在其设备中包含了一个地磁场传感器。同样手持设备制造商也他们的设备中包含一个距离传感器,用于判断手持设备是否靠近人脸(如,在电话呼叫期间)。方向传感器是基于软件的,并且翻译 2013-11-12 23:41:13 · 2320 阅读 · 0 评论 -
Android Framework 之PackageManagerService详细分析
概要本篇主要分析了系统启动阶段包管理服务的启动流程,其中的几个接口在 apk 安装时也会被调用。包管理服务启动时主要做的工作大致有如下几方面: 1. 建立 java 层的 installer 与 c 层的 installd 的 socket 联接,使得在上层的 install,remove,dexopt等功能最终由 installd 在底层实现 2. 建 立 Pac转载 2013-11-14 19:56:37 · 1376 阅读 · 0 评论 -
Linux Mint 13 的安装、配置及搭建Android源码编译环境
用过ubuntu,现在想换换LinuxMint试试看。下面是我安装配置LinuxMint13的过程。1、安装安装LinuxMint13时,我尝试了好多种方法,都失败了。最后选用了硬盘安装。硬盘安装Linuxmint和安装ubuntu一样。1.1、准备工作1、从linux mint的官方网站http://www.linuxmint.com/ 下载linux mint 13。2、下转载 2013-11-14 12:49:57 · 1244 阅读 · 0 评论 -
Android获取其他包的Context实例
在Android中可以通过一个包来获取另外一个包的Context实例,Context可以做很多事情,打开activity、发送广播、打开本包下文件夹和数据库、获取classLoader、获取资源等等。Context有个createPackageContext方法,可以创建另外一个包的上下文,这个实例不同于它本身的Context实例,但是功能是一样的。这个方法有两个参数:1。packag原创 2013-11-15 09:30:19 · 1332 阅读 · 0 评论 -
Android Framework 分析 (一)
1.目录树/framework/base/api /framework/base/awt/framework/base/build/framework/base/camera关 于camera的HAL接口库。最终生成native共享库libcamera.so ,编译时根据是否定义USE_CAMERA_STUB来决定系统是否有Camera硬件支持。若没有实际的Ca转载 2013-11-15 10:33:26 · 2001 阅读 · 0 评论 -
Binder in Java
Android在Native层实现了进程间的Binder通信,但是上层应用程序的开发及Framework的实现都是Java,用Java层再实现一次肯定是不合理的,Java可以通过JNI调用Native Code,所以通过JNI复用Binder在Native层的实现就是一个顺理成章的事情。注册Service 在Init进程的init2阶段,系统启动了ServerThread,在Se转载 2013-12-06 15:31:39 · 722 阅读 · 0 评论 -
ServiceManager和IBinder的扮演角色
l ServiceManager的角色:它也是一項Core Service ServiceManager本身也是一個Native Service,而且是天字第一號的核心服務(Core Service)。在系統啟動時(即執行init.rc時),就會立即啟動它,並登記(Register)成為Binder Driver裡的第一號Native Service。如下圖所示:转载 2013-12-06 15:32:54 · 1086 阅读 · 0 评论 -
解析Activity中的onCreate方法
我们在写一个自己的Activity的时候需要注意:1、都必须extends Activity(或者其子类);2、必须在方法onCreate中存在一条这样的语句:super.onCreate(也就是调用Activity的onCreate方法),对于super.onCreate方法放的位置要求不是很高,只要被调用了就可以了,super.onCreate主要是加载一些组件。如下面:imp原创 2013-12-02 10:16:21 · 12852 阅读 · 3 评论 -
在组件中获取服务对象的大致步骤
我们可以在Activity、Service中获取到服务的管理对象,从而可以让服务工作,完成客户端的请求。在aidl文件编译生成的java文件中,有关服务管理对象(XXManager)、服务接口(IXXManager)、根(IXXManager.Stub)、服务(XXManagerService)、服务代理(IXXManager.Stub.Proxy)之间的大致类关系如图:具体可以看下a原创 2013-12-03 11:18:27 · 1786 阅读 · 0 评论 -
Service Manager分析
Android系统Binder机制的总管是Service Manager,所有的Server(System Server)都需要向他注册,应用程序需要向其查询相应的服务。可见其作用是多么的重要,那么我们这里就要重点介绍一下这个。这里以java层加入ServiceManager及getService为数据流分析一下。复习一下典型的Binder模式,有利于后面的理解:1、客户端通过转载 2013-12-06 15:33:52 · 1015 阅读 · 0 评论 -
AIDL文件中使用实现接口Parcelable的类
在官方文档中说明了,在AIDL文件中可以使用:AIDL使用简单的语法来声明接口,描述其方法以及方法的参数和返回值。这些参数和返回值可以是任何类型,甚至是其他AIDL生成的接口。 其中对于Java编程语言的基本数据类型 (int, long, char, boolean等),String和CharSequence,集合接口类型List和Map,不需要import 语句。原创 2013-12-19 20:48:57 · 3751 阅读 · 0 评论 -
关于方法的调用情况
对于方法的执行次数,可以再使用类的成员变狼原创 2014-05-20 11:30:38 · 580 阅读 · 0 评论 -
Android传感器学习四---Environment Sensor
原文链接:http://developer.android.com/guide/topics/sensors/sensors_environment.htmlAndroid平台提供了四种监测各种环境属性的传感器。使用这些传感器能够监视相对Android设备附近范围内的空气湿度、光照度、大气压力,以及温度等。所有这四种环境传感器都是基于硬件的,并且只有在制造商把它们内置到设备中时才有效。大多数制翻译 2013-11-12 23:45:16 · 1292 阅读 · 0 评论 -
Android传感器学习二---动作传感器Motion Sensor
Android平台上支持的动作传感器。传感器传感器数据描述测量单位TYPE_ACCELEROMETERSensorEvent.values[0]X轴方向的加速力(包括重力)m/s2SensorEvent.values[1]Y轴方向的加速力(包括重力)翻译 2013-11-12 23:37:08 · 7039 阅读 · 0 评论 -
Android系统启动过程
Android系统启动过程首先Android框架架构图:(来自网上,我觉得这张图看起来很清晰) Linux内核启动之后就到Android Init进程,进而启动Android相关的服务和应用。启动的过程如下图所示:(图片来自网上,后面有地址) 下面将从Android4.0源码中,和网络达人对此的总结中,对此过程加以学习了解转载 2013-11-25 10:03:46 · 723 阅读 · 0 评论 -
android:screenOrientation的说明
// 第一种方式:在清单文件中相应的Activity中设置,灵活性不好,添加如下属性: // android:screenOrientation="unspecified" // android:screenOrientation="landscape" // android:screenOrientation="portrait"原创 2013-09-09 09:44:53 · 13062 阅读 · 0 评论 -
android framework 分析(二)
启动 Zygote-Xzygote /system/bin --zygote--start-system-serverAndroidRuntime->AppRuntimeint main(int argc,const char* constargv[]){ AppRuntimeruntime;生成AndroidRuntime实例 ...转载 2013-11-15 10:37:22 · 1584 阅读 · 0 评论 -
Android服务之PackageManagerService启动源码分析
了解了Android系统的启动过程的读者应该知道,Android的所有Java服务都是通过SystemServer进程启动的,并且驻留在SystemServer进程中。SystemServer进程在启动时,通过创建一个ServerThread线程来启动所有服务,本文主要介绍Android服务中PackageManagerService服务启动过程。首先介绍一些PackageManagerServi转载 2013-11-15 11:33:26 · 797 阅读 · 0 评论 -
PackageManagerService对象构造过程
PackageMangerService的构造方法是个比较复杂的过程:(具体构造方法的代码见源码,由于太多了,代码中加了注释,是Android4.0的)。流程见手稿。先从构造方法一步一步,遇到关键的类,关键的点在说明。 public PackageManagerService(Context context, boolean factoryTest, b原创 2013-11-16 11:38:30 · 1032 阅读 · 0 评论 -
Android PackageManagerService scanDirLI文件扫描方法
在Android服务之PackageManagerService启动源码分析中介绍了PackageManagerService服务的整个启动过程,启动过程相对来说较为简单,就是构造一个PackageManagerService对象,然后注册到ServiceManager进程中,只是PackageManagerService对象的构造过程比较复杂,任务比较繁重,在前面介绍PackageManager转载 2013-11-16 22:29:33 · 3344 阅读 · 2 评论 -
Android中APK的安装过程
Android应用安装有如下四种方式:1.系统应用安装――开机时完成,没有安装界面2.网络下载应用安装――通过market应用完成,没有安装界面3.ADB工具安装――没有安装界面。4.第三方应用安装――通过SD卡里的APK文件安装,有安装界面,由 packageinstaller.apk应用处理安装及卸载过程的界面。应用安装的流程及路径转载 2013-11-16 23:08:24 · 1397 阅读 · 0 评论 -
Android应用程序消息循环源码分析
消息都是存放在一个消息队列中去,而消息循环线程就是围绕这个消息队列进入一个无限循环的,直到线程退出。如果队列中有消息,消息循环线程就会把它取出来,并分发给相应的Handler进行处理;如果队列中没有消息,消息循环线程就会进入空闲等待状态,等待下一个消息的到来。在编写Android应用程序时,当程序执行的任务比较繁重时,为了不阻塞UI主线程而导致ANR的发生,我们通常的做法的创建一个子线程来完成特定转载 2013-11-16 22:34:41 · 1100 阅读 · 0 评论 -
Android框架层PackageManagerService构造方法中的两个synchronized
在此之前的一些操作基本上都是比较简单的,也没有做什么核心的事情。主要是在这两个synchronized中,开始时,启动一个名为PackageManager的消息线程,该线程是PackageManagerService的工作线程,mHandlerThread线程是一个带消息循环的工作线程,在定义该线程对象的时候就已经创建。mHandlerThread.start();// 启动消息处理线程对原创 2013-11-16 21:53:43 · 1702 阅读 · 0 评论 -
深入理解Android消息处理系统——Looper、Handler、Thread
熟悉Windows编程的朋友可能知道Windows程序是消息驱动的,并且有全局的消息循环系统。而Android应用程序也是消息驱动的,按道理来说也应该提供消息循环机制。实际上谷歌参考了Windows的消息循环机制,也在Android系统中实现了消息循环机制。Android通过Looper、Handler来实现消息循环机制,Android消息循环是针对线程的(每个线程都可以有自己的消息队列和消息循环转载 2013-11-23 10:01:50 · 725 阅读 · 0 评论 -
Android消息队列模型——Thread,Handler,Looper,Massage Queue
Android系统的消息队列和消息循环都是针对具体线程的,一个线程可以存在(当然也可以不存在)一个消息队列(Message Queue)和一个消息循环(Looper)。Android中除了UI线程(主线程),创建的工作线程默认是没有消息循环和消息队列的。如果想让该线程具有消息队列和消息循环,并具有消息处理机制,就需要在线程中首先调用Looper.prepare()来创建消息队列,然后调用Loope转载 2013-11-23 10:02:50 · 1159 阅读 · 0 评论 -
Android开机启动流程初探
l Init进程Android系统在启动时首先会启动Linux系统,引导加载Linux Kernel并启动init进程。Init进程是一个由内核启动的用户级进程,是Android系统的第一个进程。该进程的相关代码在platform\system\core\init\init.c。在main函数中,有如下代码:open_devnull_stdio();log_init();转载 2013-11-25 09:57:57 · 705 阅读 · 0 评论 -
Android系统启动流程 -- android
Android的启动过程是从进程init开始的,所以它是后续所有进程的祖先进程。一、init进程源码位于system/core/init目录。主要做了以下事情:1. 重新设置子进程终止时信号SIGCHLD的处理函数。act.sa_handler = sigchld_handler; //调用了wait函数等待子进程退出。act.sa_flags =转载 2013-11-25 09:59:55 · 1293 阅读 · 0 评论 -
Android源码学习—系统启动过程
Android的启动过程可以分为两个阶段,第一阶段是Linux的启动,第二阶段才是Android的启动,下面我们分别来了解一下具体的过程。首先是Linux启动,这一部分我想就可以略过了,无非是Linux的Bootloader,Kernel,Driver之类的,在这里唯一要提到的就是ServiceManager,即服务管理器,这个是做为一个进程在Android加载之前就被启动了,我们可以从ini转载 2013-11-25 10:36:28 · 793 阅读 · 0 评论 -
Androi与html中的JavaScript之间方法相互调用
对于这个问题,很多人都知道怎么一回事。Android调用Html中JS的方法,JS如何调用Android中的方法?先来说说,WebView、WebViewClient、WebChromeClient。一、简介1、WebView 一说到WebView可能,很多人会说,其有很多的弊端,再次不说。至于,它是干什么的控件(略)。2、WebViewClientWebVie原创 2016-09-13 16:14:27 · 725 阅读 · 0 评论