深入理解Android内核
文章平均质量分 94
yangxi_001
这个作者很懒,什么都没留下…
展开
-
Activity启动分析(二)--创建Window和View
一.Activity启动Activity由ActivityThread负责启动。 ActivityThread的分析将在《ActivityThread分析》中,在此,只需要知道创建activity的入口在ActivityThread就行,不影响以下的分析。 ActivityThread.java private final Activity performLaunchAct转载 2014-02-26 14:43:12 · 761 阅读 · 0 评论 -
Android技巧拾取
http://blog.csdn.net/column/details/qinjuning-and-1.html转载 2014-02-26 14:38:52 · 539 阅读 · 0 评论 -
Android核心分析
http://blog.csdn.net/maxleng/article/details/5471557转载 2014-02-26 14:23:25 · 889 阅读 · 0 评论 -
Android框架浅析
http://blog.csdn.net/column/details/qinjuning-and-2.html转载 2014-02-26 14:38:17 · 519 阅读 · 0 评论 -
Activity启动分析(一)--ActivityThread
1. 入口。以前一直都说Activity的人口是onCreate方法。其实android上一个应用的入口,应该是ActivityThread。和普通的java类一样,入口是一个main方法。public static final void main(String[] args) { SamplingProfilerIntegration.start();转载 2014-02-26 14:40:51 · 1452 阅读 · 0 评论 -
Android中Context详解 ---- 你所不知道的Context
大家好, 今天给大家介绍下我们在应用开发中最熟悉而陌生的朋友-----Context类 ,说它熟悉,是应为我们在开发中 时刻的在与它打交道,例如:Service、BroadcastReceiver、Activity等都会利用到Context的相关方法 ; 说它陌生,完全是 因为我们真正的不懂Context的原理、类结构关系。一个简单的问题是,一个应用程序App中存在多少个转载 2014-02-26 10:59:01 · 663 阅读 · 0 评论 -
Android Activity学习笔记——Activity的启动和创建
最近学习Android相关知识,感觉仅仅了解Activity几个生命周期函数基本上没有任何意义的;于是想深入了解一下Activity到底是怎么一回事怎么运行来的;里面的东东真是叫个庞大;现在只能简单的了解其框架性的概念和流程;一 Activity概念 Android的核心不是Application而是Activity,至少在我们开发的时候是这样的; Activity就是被用转载 2014-02-24 17:16:08 · 624 阅读 · 0 评论 -
android onTouchEvent和setOnTouchListener中onTouch的区别
android中onTouchEvent和setOnTouchListener中onTouch的区别可以有些人并不了解,其实要说明白这个问题先要说下android的事件传递机制。首先看下以下的代码1,这段代码反应了View处理事件的过程:代码1:public boolean dispatchTouchEvent(MotionEvent event) {转载 2014-01-13 11:09:45 · 794 阅读 · 0 评论 -
Android TouchEvent事件传递机制
跟touch事件相关的3个方法:public boolean dispatchTouchEvent(MotionEvent ev); //用来分派eventpublic boolean onInterceptTouchEvent(MotionEvent ev); //用来拦截eventpublic boolean onTouchEvent(MotionEvent ev);转载 2014-01-13 11:08:42 · 796 阅读 · 0 评论 -
android自定义view-绘制顺序及相关原理
Android系统中要自定义view,首先需要了解Android的view加载机制。主要有三个方法:1、onMeasure() //计算出view自身大小2、onLayout() //仅在ViewGroup中,用来为子view指定位置3、onDraw() //view绘制内容那么系统能让我们在onDraw()能够绘制些什么呢,查看View.draw()源转载 2013-12-25 15:14:55 · 1043 阅读 · 0 评论 -
Android onTouch事件传递机制
Android onTouch事件介绍:Android的触摸事件:onClick, onScroll, onFling等等,都是由许多个Touch组成的。其中Touch的第一个状态肯定是ACTION_DOWN, 表示按下了屏幕。之后,touch将会有后续事件,可能是:ACTION_MOVE //表示为移动手势ACTION_UP //表示为离开屏幕AC转载 2014-01-02 09:42:34 · 787 阅读 · 0 评论 -
Android 中MVC实例之Activity,Window和View
MVC模式的简单介绍:除此之外,此模式通过对复杂度的简化,使程序结构更加直观。软件系统通过对自身基本部份分离的同时也赋予了各个基本部分应有的功能。专业人员可以通过自身的专长分组:(控制器Controller)- 负责转发请求,对请求进行处理。(视图View) - 界面设计人员进行图形界面设计。(模型Model) - 程序员编写程序应有的功能(实现算法等等)、数据库专家进行数据管理和数据转载 2013-11-28 22:01:33 · 1267 阅读 · 0 评论 -
Android框架浅析
http://blog.csdn.net/column/details/qinjuning-and-2.html转载 2014-06-23 18:03:23 · 557 阅读 · 0 评论 -
Android核心分析
http://blog.csdn.net/column/details/androidcore.html转载 2014-07-13 13:40:31 · 585 阅读 · 0 评论 -
Android Context简介
1. Context基本概念1.1 Context是什么? 1) Context是一个抽象类,其通用实现在ContextImpl类中。 2) Context:是一个访问application环境全局信息的接口,通过它可以访问application的资源和相关的类,其主要功能如下: • 启动Activity • 启动和停止S转载 2017-02-15 18:08:54 · 456 阅读 · 0 评论 -
android Activity管理简析
一、Activity的生命周期Activity的管理同样是基于C/S架构的,所有的activity管理都在server端进行。在Server端对每个activity进行调度的同时,Client端负责响应各个生命周期的函数。在Client端,对activity各个生命周期的响应都是在ActivityThread里进行操作。在本地,activity的生命周期如下图转载 2017-02-17 16:09:51 · 1435 阅读 · 0 评论 -
android窗口管理剖析
一、 概述在Android系统中,从设计的角度来看,窗口管理系统是基于C/S模式的。整个窗口系统分为服务端和客户端两大部分,客户端负责请求创建窗口和使用窗口,服务端完成窗口的维护,窗口显示等。 在Client端,并不是直接和 WindowManagerService交互,而是直接和本地对象WindowManager交互,然后由WindowManager完成和 W转载 2017-02-17 17:03:07 · 595 阅读 · 0 评论 -
深入理解Activity——Token之旅
Token是ActivityRecord的内部静态类,我们先来看下Token的继承关系,Token extends IApplicationToken.Stub,从IApplicationToken.Stub类进行继承,根据Binder的机制可以知道Token是一个匿名Binder实体类,这个匿名Binder实体会传递给其他进程,其他进程会拿到Token的代理端。 我们知道匿名Bin转载 2017-02-16 19:25:52 · 1084 阅读 · 0 评论 -
Android 内核--Binder架构分析
一、Binder架构 在Android中,Binder用于完成进程间通信(IPC),即把多个进程关联在一起。比如,普通应用程序可以调用音乐播放服务提供的播放、暂停、停止等功能。Binder工作在Linux层面,属于一个驱动,只是这个驱动不需要硬件,或者说其操作的硬件是基于一小段内存。从线程的角度来讲,Binder驱动代码运行在内核态,客户端程序调用Binder是通过系统调用完成的。转载 2017-02-16 19:20:08 · 271 阅读 · 0 评论 -
Android 内核--Context对象
Context(在Android中翻译为场景):一个Activity就是一个Context,一个Service也是一个Context,应用程序中有多少个Activity或者Service,就会有多少个Context对象; Android把"场景"抽象为Context类,用户和操作系统的每一次交互都是一个场景; 如打电话为有界面的场景,后台服务service为没界面的场景; Context类转载 2017-02-16 19:18:55 · 418 阅读 · 0 评论 -
框架层理解Activity生命周期(APP启动过程)
1生命周期图2主要类图调用上面类图关系中包含两个进程,一个是应用程序进程,另一个是AMS进程,所以会涉及到进程间通信,android进程间通信用的是Binder通信。2.1客户进程ØActivityThread可以看到该类有一个main方法,其实它是android一个应用程序的入口,每启动一个应用进程,都会创建ActivityThread与之对应的实例,是应转载 2014-02-26 14:15:17 · 2963 阅读 · 0 评论 -
Android之system_server与zygote之作用
google说,伊甸园(linux世界)要被隔离,于是便创造了亚当(Adm)与夏娃(Eve),称它为zygote和system_server --xxx 第二天,init跑完了,它对于android系统,最重要的,就是启动了zygote和system-server,谁是Adam谁是Eve? 从分析init.rc来看?转载 2016-04-14 18:44:24 · 641 阅读 · 0 评论 -
Android系统启动过程
首先Android框架架构图:(来自网上,我觉得这张图看起来很清晰) Linux内核启动之后就到Android Init进程,进而启动Android相关的服务和应用。启动的过程如下图所示:(图片来自网上,后面有地址) 下面将从Android4.0源码中,和网络达人对此的总结中,对此过程加以学习了解和总结,以下学习过程中代码转载 2016-04-14 18:06:38 · 287 阅读 · 0 评论 -
Android启动过程深入解析
当按下Android设备电源键时究竟发生了什么?Android的启动过程是怎么样的?什么是Linux内核?桌面系统linux内核与Android系统linux内核有什么区别?什么是引导装载程序?什么是Zygote?什么是X86以及ARM linux?什么是init.rc?什么是系统服务?当我们想到Android启动过程时,脑海中总是冒出很多疑问。本文将介绍Android的启动过程,希望能帮转载 2016-04-14 18:04:45 · 413 阅读 · 0 评论 -
Android中获取应用程序(包)的大小-----PackageManager的使用(二)
通过第一部分Android中获取应用程序(包)的信息-----PackageManager的使用(一)>>的介绍,对PackageManager以及AndroidManife.xml定义的节点信息类XXXInfo类都有了一定的认识。 本部分的内容是如何获取安装包得大小,包括缓存大小(cachesize)、数据大小(datasize)、应用程序大小(codesize转载 2014-11-11 14:09:48 · 561 阅读 · 0 评论 -
Android中获取应用程序(包)的信息-----PackageManager的使用(一)
转自:http://blog.csdn.net/qinjuning/article/details/6867806本节内容是如何获取Android系统中应用程序的信息,主要包括packagename、label、icon、占用大小等。具体分为两个 部分,计划如下: 第一部分: 获取应用程序的packagename、label、icon等 ;转载 2014-11-11 14:08:40 · 588 阅读 · 0 评论 -
Android 中Activity,Window和View之间的关系
我想大多数人,对于这3个东西的概念能区分,但是具体区别在哪却很难说出来。我这里根据我个人的理解来讲讲我个人对这3个概念的理解。当然这里设计到通用的事件窗口模型等通用GUI设计,我这里就不打算讲了,纯粹从概念上来进行区分。Activity是Android应用程序的载体,允许用户在其上创建一个用户界面,并提供用户处理事件的API,如onKeyEvent, onTouchEvent等。 并维护应转载 2013-11-28 22:02:10 · 689 阅读 · 0 评论 -
Android之MVC模式
MVC (Model-View-Controller):M是指逻辑模型,V是指视图模型,C则是控制器。一个逻辑模型可以对于多种视图模型,比如一批统计数据你可以分别用柱状图、饼图来表示。一种视图模型也可以对于多种逻辑模型。使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式,而C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新,这与《设计模式》中的观察者模式是完转载 2013-11-28 22:00:44 · 675 阅读 · 0 评论 -
Android的AsyncTask源码分析
一说到AsyncTask,大家就会说 ,他是系统提供给我的用于执行异步任务的工具类。比Handler好用只需要重写方法,每个Asynchronous对象只能执行1次。但是他必须要放在主线程里创建。为什么呢?这都是为什么呢?我们就来对这些疑惑一探究竟: 打开这个类,我喜欢只有除去一些注释只有250多行: 二话不说,先看他的构造吧: public A转载 2013-11-18 16:19:28 · 447 阅读 · 0 评论 -
Android TouchEvent 分发流程
动作序列的三个事件TouchEvent 分三种事件:down、move、up。其中move事件在一个操作中(这里说的一个操作就是用户与屏幕的交互,即由down到up的动作序列)可能会发生多次。 但是,我们认为一个动作序列会包含以上三种事件,因此,在事件处理中就是要处理好这个过程,而最重要的就是down事件,这是一个动作序列的起始,没有down谈不上后面的事件了。 所以,我们转载 2013-11-19 10:32:08 · 516 阅读 · 0 评论 -
Android的进程,线程模型
Android 包括一个应用程序框架、几个应用程序库和一个基于 Dalvik 虚拟机的运行时,所有这些都运行在 Linux 内核之上。通过利用 Linux 内核的优势,Android 得到了大量操作系统服务,包括进程和内存管理、网络堆栈、驱动程序、硬件抽象层、安全性等相关的服务。 有关Java虚拟机跟进程,线程的关系请参看下面这篇文章:进程、线程与JVM、CLR转载 2013-11-19 10:26:46 · 565 阅读 · 0 评论 -
深入解析AsyncTask
AsyncTask的介绍及基本使用方法关于AsyncTask的介绍和基本使用方法可以参考官方文档和Android实战技巧:多线程AsyncTask这里就不重复。AsyncTask引发的一个问题上周遇到了一个极其诡异的问题,一个小功能从网络上下载一个图片,然后放到ImageView中,是用AsyncTask来实现的,本身逻辑也很简单,仅是在doInBackground中用HTTP请求把图片的输入流取转载 2013-11-18 16:15:32 · 529 阅读 · 0 评论 -
Android应用程序消息处理机制(Looper、Handler)分析
Android应用程序是通过消息来驱动的,系统为每一个应用程序维护一个消息队例,应用程序的主线程不断地从这个消息队例中获取消息(Looper),然后对这些消息进行处理(Handler),这样就实现了通过消息来驱动应用程序的执行,本文将详细分析Android应用程序的消息处理机制。 前面我们学习Android应用程序中的Activity启动(Android应用程序启动过程源代码转载 2013-11-18 14:14:14 · 621 阅读 · 0 评论 -
Android 之 Looper、MessageQueue、Handler 与消息循环
在android的activity中有各种各样的事件,而这些事件最终是转换为消息来处理的。android中的消息系统涉及到: * 消息发送 * 消息队列 * 消息循环 * 消息分发 * 消息读取 消息对应的重要类有MessageQueue、Looper、Handler,它们分别对应着消息队列、消息循环和消息处理。 Handler类:Handl转载 2013-11-15 10:42:04 · 540 阅读 · 0 评论 -
Android 之 内存管理
概述在android的开发中,要时刻主要内存的分配和垃圾回收,因为系统为每一个dalvik虚拟机分配的内存是有限的,在google的G1中,分配的最大堆大小只有16M,后来的机器一般都为24M,实在是少的可怜。这样就需要我们在开发过程中要时刻注意。不要因为自己的代码问题而造成OOM错误。JAVA的内存管理大家都知道,android应用层是由java开发的,android的d转载 2013-11-15 10:41:10 · 541 阅读 · 0 评论 -
Android 之 Binder与进程间通信
Binder机制是android中实现的进程间通信的架构,它采用的是c/s架构,client通过代理完成对server的调用。ServiceManager既然这里提到了server,那么我们有必要先了解下在android中是怎么来管理server的。先来看一个重要的Native进程:ServiceManager,从名字可以看出来,这个是用来管理所有server的。在init进程启动之后,会转载 2013-11-15 10:42:36 · 572 阅读 · 0 评论 -
Android 之ActivityThead、ActivityManagerService 与activity的管理和创建
在android中,Activity是四大组件中比较重要的一个(当然其他的也比较重要),那么android中是怎样管理这些activity的?应用的进程和主线程是怎么创建的,应用的消息循环又是在什么时候创建的?在这篇文章中将详细介绍: 先来看下涉及到的类,通过以下类图对整体先有个大概的印象: ActivityThread:ActivityT转载 2013-11-15 10:41:01 · 560 阅读 · 0 评论 -
Android 之 zygote 与进程创建
在android中,应用程序的入口是ActivityThead中的main函数,那么之后系统是怎样为应用程序创建进程的呢?SystemService又是怎样创建的?答案是:zygotezygote翻译成中文是受精卵的意思,名字比较奇怪、但是很有意思。在android中,大部分的应用程序进程都是由zygote来创建的,为什么用大部分,因为还有一些进程比如系统引导进程、init进程等不是有zygo转载 2013-11-15 10:42:11 · 604 阅读 · 0 评论 -
Android 之 ServiceManager与服务管理
ServiceMananger是android中比较重要的一个进程,它是在init进程启动之后启动,从名字上就可以看出来它是用来管理系统中的service。比如:InputMethodService、ActivityManagerService等。在ServiceManager中有两个比较重要的方法:add_service、check_service。系统的service需要通过add_servi转载 2013-11-15 10:43:47 · 575 阅读 · 0 评论 -
Android 之 Window、WindowManager 与窗口管理
其实在android中真正展示给用户的是window和view,activity在android中所其的作用主要是处理一些逻辑问题,比如生命周期的管理、建立窗口等。在android中,窗口的管理还是比较重要的一块,因为他直接负责把内容展示给用户,并和用户进行交互。响应用户的输入等。在讲窗口管理时,有必要先说下ViewManager这个接口,这个接口主要有以下的实现子接口和实现类,分别是:W转载 2013-11-15 10:43:54 · 595 阅读 · 0 评论