在安卓开发过程中.toast使我们常常使用的一个类.当我们须要向用户传达一些信息,可是不须要和用户交互时,该方式就是一种十分恰当的途径. 我们习惯了这样使用toast:Toast.makeText(Context context, String info, int duration).show();该方法是 系统为我们提供的一个方便的创建toast对象的静态方法,其内部依旧是调用toast的相关方法完毕.以下 就从其源代码对该类的实现做一个分析 在toast类中,最重要的用于显示该toast的s…
Android源代码分析之拍照.图片.录音.视频和音频功能   //选择图片 requestCode 返回的标识 Intent innerIntent = new Intent(Intent.ACTION_GET_CONTENT); //"android.intent.action.GET_CONTENT" innerIntent.setType(contentType); //查看类型 String IMAGE_UNSPECIFIED = "image/*"; I…
版权声明:本文为博主offbye西涛原创文章.未经博主同意不得转载. https://blog.csdn.net/offbye/article/details/31776833 PhoneGap/Cordova是一个专业的移动应用开发框架,是一个全面的WEB APP开发的框架,提供了以WEB形式来訪问终端设备的API的功能. 这对于採用WEB APP进行开发人员来说是个福音.这能够避免了原生开发的某些功能. Cordova 仅仅是个原生外壳,app的内核是一个完整的webapp.须要调用的原生功…
下载Android源码简要流程 : a. 获取repo文件: curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo .注意执行该文件需要python2.5以上版本,如果是2.4.3的python版本就无法执行这个文件脚本; b. 修改repo权限 : chmod a+x ~/bin/repo , 如果repo没有执行权限, 该脚本也无法执行; c. 初始化repo文件 : repo in…
下载Android源码简要流程 : a. 获取repo文件: curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo .注意执行该文件需要python2.5以上版本,如果是2.4.3的python版本就无法执行这个文件脚本; b. 修改repo权限 : chmod a+x ~/bin/repo , 如果repo没有执行权限, 该脚本也无法执行; c. 初始化repo文件 : repo in…
描写叙述 结合几个问题去看源代码. 1.Handler, MessageQueue, Message, Looper, LocalThread这5者在android的消息传递过程中扮演了什么样的角色? 2.一个线程中能够有多个Handler吗?多个Looper呢? 3.整个消息处理过程.消息是怎么流动的? 4.为什么仅仅有UI线程能够更改UI?(就凭他叫UI线程?事实上也能够叫主线程或者ActivityThread) 開始看源代码 1.View的绘制都是从ViewRootImpl这个类開始,我们…
转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/23387079 (来自singwhatiwanna的csdn博客) 前言 我们知道,在activity内部訪问资源(字符串,图片等)是非常easy的,仅仅要getResources然后就能够得到Resources对象,有了Resources对象就能够訪问各种资源了,这非常easy,只是本文不是介绍这个的,本文主要介绍在这套逻辑之下的资源载入机制 资源载入机制 非常明白,不同的…
正如前面<谁动了我的截图?--Monkeyrunner takeSnapshot方法源代码跟踪分析>所述,本文主要会尝试描写叙述android的自己主动化測试框架MonkeyRunner到底是怎样和目标设备进行通信的. 在上一篇文章中我们事实上已经描写叙述了当中一个方法.就是通过adb协议发送adbserver请求的方式驱动android设备的adbd守护进程去获取FrameBuffer的数据生成屏幕截图.那么MonkeyRunner还会用其它方式和目标设备进行通信吗?答案是肯定的,且看我们一…
在Android中MediaPlayer用来播放音频和视频文件,在这里分析下在Framework层中MediaPlayer是怎样调用的.MediaPlayer的代码位于:./frameworks/base/media/java/android/media/MediaPlayer.java   以下用到的代码是基于Android 4.4 打开后有一个静态代码块是载入库文件的,仅仅要这个类被创建就会载入库. static { System.loadLibrary("media_jni");…
PS一句:不得不说CSDN同步做的非常烂.还得我花了近1个小时恢复这篇博客. 引言 [转载请注明出处:http://blog.csdn.net/feiduclear_up CSDN 废墟的树] 作为Android开发人员,相信非常多人都使用过Android的Handler类来处理异步任务. 那么Handler类是怎么构成一个异步任务处理机制的呢?这篇 博客带你从源代码分析Android的消息循环处理机制.便于深入的理解. 这里不得不从"一个Bug引发的思考"開始研究Android的消息…
1.在eclipse中跟踪源代码:假如对mainactivity.java里面的activity按Ctrl+鼠标左键(前提已经导入android源代码:方法1:在项目点击右键,然后找到properties,然后在project build targe选择对应的版本.方法2:对一个类右键ctrl+鼠标左键进入一个界面,然后点击里面的attach source,然后把自己下载好的安卓源代码导进去)2.Android源代码分析目录结构分析: http://blog.csdn.net/wulianghu…
Android KLog源代码分析 Android KLog源代码分析 代码结构 详细分析 BaseLog FileLog JsonLog XmlLog 核心文件KLogjava分析 遇到的问题 一直使用这个库.但没有细致研究.今天就来研究一下.该库的地址: KLog,在这里先感谢下作者.棒棒哒! 代码结构 整个代码的结构非常easy.例如以下: library klog BaseLog.java FileLog.java JsonLog.java XmlLog.java KLog.java K…
为什么要研究Android,是因为它够庞大,它够复杂,他激起了我作为一个程序员的内心的渴望,渴望理解这种复杂性.我研究的对象是作为手机开发平台的Android软件系统部分,而不是Dalvik虚拟机本身. 作为一个从其他平台装接过来的程序员,要从事Andoid平台系统开发,我的关于手机平台上积累的知识已经不能满足需要了,Android为我们带来了大量的新名词,Activity,Manifest,INTENT,Service,Binder,Dalvik虚拟机,Framework,Linux,Navt…
一.概述 一直有read the fucking source code的计划,可是实行起来都是断断续续的.到如今也没有真正得读过多少Android的源代码(主要是懒的).如今回忆起来实在是非常羞愧,再加上好久没有写博客了,经过几天的琢磨准备在CSDN博客开两个长时间更新的系列博客(Android 源代码和Android设计模式),每周更新最少一篇.以此来督促自己,而且跟其它小伙伴一起分享这个过程. 之前是直接读的framework层的源代码,读起来比較枯燥和生涩,碰巧上周写了一篇MVP在And…
假设说Android源代码中哪个地方装饰模式应用的最明显的话,那肯定是非ContextWrapper莫属了,ContextWrapper是一个透明的经典的装饰模式.本文将通过装饰器模式分析Context源代码结构.本文基于的Android源代码是(android 5.0.0). 首先先介绍一下装饰模式. 装饰模式 意图 装饰模式动态地给对象加入额外的职责,就加入功能来说,它比子类的方式更加灵活. UML图 简单代码 class Component{ public void operate1(){…
1. 安装 Source Insight (1) Source Insight 相关资源 安装相关资源 : -- 下载地址 : http://www.sourceinsight.com/down35.html; -- 注冊码 : SI3US-361500-17409 . 2. 导入 Android 源代码 导入 Android 源代码 : -- 创建project : Project -> New Project, 输入一个project名, 文件路径设置为 Android 源代码路径, 这个一…
android-plugmgr是一个Android插件加载框架,它最大的特点就是对插件不需要进行任何约束.关于这个类库的介绍见作者博客,市面上也有一些插件加载框架,但是感觉没有这个好.在这篇文章中,我们将不仅止于原理,对源代码的具体实现进行分析.文章中涉及的代码可从https://github.com/kissazi2/AndroidDemo/tree/master/PlugLoadDemo下载,基于Android Studio 1.2编译. 在正式开始分析源代码之前,我们首先需要有一些动态加载…
SwipeRefreshLayout 是在Android Support Library, revision 19.1.0加入到support v4库中的一个下拉刷新控件,关于android的下拉刷新框架如今有好多,以前用过XListView,如今工作中基本上无需用到下拉刷新的功能. 废话不多说了.这里来记录一下android自带的刷新控件SwipeRefreshLayout的使用,借此顺便来熟悉一下android 在Lollipop版本号推出的嵌套滑动机制(NestedScrolling).…
[工匠若水 http://blog.csdn.net/yanbober 转载烦请注明出处.尊重劳动成果] 1 背景 之所以写这一篇博客的原因是由于之前有写过一篇<Android应用setContentView与LayoutInflater载入解析机制源代码分析>.然后有人在文章以下评论和微博私信中问我关于Android应用Activity.Dialog.PopWindow载入显示机制是咋回事,所以我就写一篇文章来分析分析吧(本文以Android5.1.1 (API 22)源代码为基础分析),以…
[转载请注明出处:http://blog.csdn.net/feiduclear_up CSDN 废墟的树] 引言 在平时项目开发中难免会遇到异步耗时的任务(比方最常见的网络请求).遇到这样的问题.我们能够自己通过Handler+Message+Thread/ThreadPool来构造一个异步耗时任务框架.当你下次项目中又遇到一个网络请求,你又不得不重写异步耗时任务处理框架.出于避免开发人员反复搬砖工作,Googleproject师给开发人员搭建了一个通用的异步耗时任务处理框架--AsyncTa…
原文网址:http://blog.csdn.net/luoshengyang/article/details/19023609 在前文中,我们分析了Android编译环境的初始化过程.Android编译环境初始化完成后,我们就可以用m/mm/mmm/make命令编译源代码了.当然,这要求每一个模块都有一个Android.mk文件.Android.mk实际上是一个Makefile脚本,用来描述模块编译信息.Android编译系统通过整合Android.mk文件完成编译过程.本文就对Android源…
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6768304 在Android系统中,所有的应用程序进程以及系统服务进程SystemServer都是由Zygote进程孕育 (fork)出来的,这也许就是为什么要把它称为Zygote(受精卵)的原因吧.由于Zygote进程在Android系统中有着如此重要的地位,本文 将详细分析它的启动过程. 在前面一篇文章Android应用程序进程启动过程的源…
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6595744 我们知道,在Android系统中,提供了一个轻量级的日志系统,这个日志系统是以驱动程序的形式实现在内核空间的,而在用户空间分别提供了Java接口和C/C++接口来使用这个日志系统,取决于你编写的是Android应用程序还是系统组件.在前面的文章浅谈Android系统开发中LOG的使用中,已经简要地介绍了在Android应用程序开发中…
转载请注明出处:http://blog.csdn.net/zhoubin1992/article/details/46379055 ASimpleCache框架源代码链接 https://github.com/yangfuhai/ASimpleCache 杨神作品.大家最熟悉他的应该是afinal框架吧 官方介绍 ASimpleCache 是一个为android制定的 轻量级的 开源缓存框架. 轻量到仅仅有一个java文件(由十几个类精简而来). 1.它能够缓存什么东西? 普通的字符串.Json…
概况 Android在4.3的版本号中(即API 18)增加了NotificationListenerService,依据SDK的描写叙述(AndroidDeveloper)能够知道,当系统收到新的通知或者通知被删除时,会触发NotificationListenerService的回调方法.同一时候在Android 4.4 中新增了Notification.extras 字段,也就是说能够使用NotificationListenerService获取系统通知详细信息,这在曾经是须要用反射来实现的…
HandlerThread 简单介绍: 我们知道Thread线程是一次性消费品,当Thread线程运行完一个耗时的任务之后.线程就会被自己主动销毁了.假设此时我又有一 个耗时任务须要运行,我们不得不又一次创建线程去运行该耗时任务.然而.这样就存在一个性能问题:多次创建和销毁线程是非常耗 系统资源的.为了解这样的问题,我们能够自己构建一个循环线程Looper Thread.当有耗时任务投放到该循环线程中时.线程运行耗 时任务,运行完之后循环线程处于等待状态,直到下一个新的耗时任务被投放进来.这样一…
AsyncTask源代码分析 public abstract class AsyncTask<Params, Progress, Result> { //日志TAG private static final String LOG_TAG = "AsyncTask"; //池中所保存的线程数,包括空闲线程. ; //池中允许的最大线程数. ; //当线程数大于核心时,此为终止前多余的空闲线程等待新任务的最长时间. ; //一个线程工厂,用来创建新线程 没啥好说的. priva…
尊重原创:http://blog.csdn.net/yuanzeyao/article/details/46842891 本篇文章接着上篇文章的内容来继续讨论View的绘制机制,上篇文章中我们主要解说了View的measure过程.今天我们就来学习ViewGroup的measure过程.因为ViewGroup仅仅是一个抽象类,所以我们须要以一个详细的布局来分析measure过程,正如我上篇文章说的.我打算使用LinearLayout为例解说measure过程,假设你还没有读过上篇文章.那么建议你…
到眼下为止,measure过程已经解说完了,今天開始我们就来学习layout过程.只是在学习layout过程之前.大家有没有发现我换了编辑器,哈哈.最终下定决心从Html编辑器切换为markdown编辑器.这里之所以使用"下定决心"这个词.是由于毕竟Html编辑器使用好几年了.非常多习惯都已经养成了,要改变多年的习惯确实不易.相信这也是还有非常多人坚持使用Html编辑器的原因. 这也反应了一个现象.当人对某一事物非常熟悉时,一旦出现了新的事物想代替老的事物时,人们都有一种抵触的情绪,做…
在前面一篇文章中,我们分析了Android系统在启动时安装应用程序的过程,这些应用程序安装好之后,还需要有一个 Home应用程序来负责把它们在桌面上展示出来,在Android系统中,这个默认的Home应用程序就是Launcher了,本文将详细分析 Launcher应用程序的启动过程. Android系统的Home应用程序Launcher是由ActivityManagerService启动的,而 ActivityManagerService和PackageManagerService一样,都是在开…