安卓系统源码分析
安卓工匠
工匠精神
展开
-
Activity的启动过程
1、Activity是安卓四大组件之一那么它有是怎么启动的?答:由于本人水平有限,有不妥的地方,还望读者指正我们首先来看startActivityForResult(Intent intent, int requestCode)方法,此方法的说明是:if the activity you are launching uses the singleTask launch mode,原创 2017-06-22 11:12:55 · 218 阅读 · 0 评论 -
Android 带你彻底理解 Window 和 WindowManager
有时候我们需要在桌面上显示一个类似悬浮窗的东西,这种效果就需要用 Window 来实现,Window 是一个抽象类,表示一个窗口,它的具体实现类是 PhoneWindow,实现位于 WindowManagerService 中。相信看到 WindowManagerService 你会有点眼熟,刚接触 Android 时几乎...转载 2018-08-20 17:34:46 · 5263 阅读 · 0 评论 -
Scroller使用详解
一、概述这个类封装了滚动操作。滚动的持续时间可以通过构造函数传递,并且可以指定滚动动作的持续的最长时间。经过这段时间,滚动会自动定位到最终位置,并且通过computeScrollOffset()会得到的返回值为false,表明滚动动作已经结束。二、构造函函数public Scroller (Context context)使用缺省的持续持续时间和动画插入器创建一个Scroller...转载 2018-06-08 18:59:26 · 1298 阅读 · 0 评论 -
ViewRoot中surface的创建
ViewRootImpl的mSurface变量指向Surface对象,这个surface对象是硬件渲染UI时OpenGL所使用的ANativeWindow,本文记录了这个surface时如何创建的。ViewRoot,WMS,SurfaceFlinger三者的binder连接。Surface.pngViewRootImpl构造时...转载 2018-06-22 10:39:09 · 346 阅读 · 0 评论 -
进程间通讯(1)Android 基于Message的进程间通信 Messenger完全解析
转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/47017485; 本文出自:【张鸿洋的博客】一、概述说到Android进程间通信,大家肯定能想到的是编写aidl文件,然后通过aapt生成的类方便的完成服务端,以及客户端代码的编写。如果你对这个过程不熟悉,可以查看An...转载 2018-06-07 10:27:51 · 1652 阅读 · 0 评论 -
【Android自助餐】Handler消息机制完全解析(一)Message中obtain()与recycle()的来龙去脉
【Android自助餐】Handler消息机制完全解析(一)Message中obtain()与recycle()的来龙去脉【Android自助餐】Handler消息机制完全解析(一)Message中obtain()与recycle()的来龙去脉提供obtain()回收recycle()提供obtain()在obtain的所有重载方...转载 2018-06-07 09:33:55 · 331 阅读 · 0 评论 -
Activity的onAttachedToWindow和onDetachedFromWindow调用时机源码解析
终于建了一个自己个人小站:https://huangtianyu.gitee.io,以后优先更新小站博客,欢迎进站,O(∩_∩)O~~先上测试代码:MyView.java[java] view plain copy print?import android.content.Context; import android.u...转载 2018-06-06 18:08:15 · 1055 阅读 · 1 评论 -
安卓广播的底层实现原理
安卓广播的底层实现原理 2018.02.10 01:33 字数 1016 阅读 43评论 0喜欢 1转载 2018-03-24 12:20:31 · 1227 阅读 · 1 评论 -
Android 调用so库全过程
原文地址点击打开链接一、前言Android中有时候为了效率以及平台开发库的支持,难免会用到NDK开发,那么都会产生一个so文件,通过native方法进行调用,开发和调用步骤很简单,这里就不多说了,本文主要来介绍,我们在使用so的时候总是会出现一些常见的问题,而现在插件化开发也很普遍了,有时候插件中也会包含一些so文件,需要加载,这时候也会出现一些问题。本文就来详细总结一下这些问题出现的原因,以及转载 2017-12-05 10:41:59 · 68568 阅读 · 5 评论 -
动态加载so库
简介前几天做一个视频播放的功能,用到了bilibili开源ijkplayer播放器的(集成ijkplayer),功能确实强大,但就是用到的ffmpeg解码库太大,不得已只能只能将so文件拿出来,通过动态的方式来加载。什么是动态加载?就是讲so文件不打包进apk,在安装完应用打开app的时候通过后台下载so库,将下载下来的so文件再写入到app里面。 首先我们要知道,Android加载so文件的方式转载 2017-08-01 13:42:28 · 576 阅读 · 0 评论 -
APK 安装过程 及 原理 详解
APK为AndroidPackage的缩写Android应用安装有如下四种方式:1.系统应用安装――开机时完成,没有安装界面2.网络下载应用安装――通过market应用完成,没有安装界面3.ADB工具安装――没有安装界面。4.第三方应用安装――通过SD卡里的APK文件安装,有安装界面,由 packageinstaller.apk 应用处理安装及卸载。————————————-应用安装涉及到如下几个转载 2017-08-01 10:54:28 · 505 阅读 · 0 评论 -
JIT技术
一、 说明据说Android 2.2的虚拟机dalvik使用了JIT技术,使其运行速度快了5倍。dalvik解释并执行程序,JIT技术主要是对多次运行的代码进行编译,当再次调用时使用编译之后的机器码,而不是每次都解释,以节约时间。5倍是测试程序测出的值,并不是说程序运行速度也能达到5倍,这是因为测试程序有很多的重复调用和循环,而一般程序主要是顺序执行的,而且它是一边运行,一边编译,一开始的时转载 2017-06-23 09:42:46 · 731 阅读 · 0 评论 -
Activity启动过二
首先追溯到Activity的启动,随便启动一个自己写的demo项目,使用DDMS进行debug标记,然后在Debug中把主线程暂停,可以看到调用栈。如下图所示:于是我们先看android.app.ActivityThread的main()方法。android.app.ActivityThread.main()main()方法中对一个Looper对象进行初始化,形成一原创 2017-06-22 14:01:54 · 313 阅读 · 0 评论