Android
menghaocheng
这个作者很懒,什么都没留下…
展开
-
【Android-Surface】的绘制流程
WindowManagerService.javapublic int relayoutWindow(Session session, ...){ ... result = createSurfaceControl(outSurface, result, win, winAnimator); ...}private int createSurfaceControl(Surfac...原创 2020-03-17 05:48:24 · 431 阅读 · 0 评论 -
【Android话题-6.3UI体系相关】surface的绘制原理
问题:surface绘制的buffer是怎么来的?buffer绘制完了又是怎么提交的?surface本身不是buffer,surface跨进程传递的时候也没有带什么buffer,但是Surface绘制的时候是有buffer的,这个buffer是怎么来的呢?绘制是在应用端本地完成的,但绘制完的结果需要提交到SurfaceFlinger才行,SurfaceFlinger来对图像进行合成并显...原创 2020-03-13 03:23:30 · 613 阅读 · 0 评论 -
【Android话题-6.2UI体系相关】surface跨进程传递原理
看几个问题?怎么解理surface,它是一块buffer吗?如果是,surface跨进程传递怎么带上这个buffer?如果不是,那surface跟buffer又是什么关系?suface到底是怎么跨进程传递的?原理Surface的定义public class Surface implements Parcelbale{ long mNativeObject; private...原创 2020-03-13 01:53:55 · 881 阅读 · 3 评论 -
【Android话题-6.1UI体系相关】说说屏幕刷新机制
相关几个问题丢帧一般是什么原因引起的?Android刷新频率60帧/秒,每隔16ms调ondraw绘制一次?onDraw完之后屏幕会马上刷新么?如果界面没有重绘,还会每隔16ms刷新屏幕么?如果屏幕快要刷新的时候才去onDraw绘制会丢帧么?屏幕显示原理首先应用从系统服务申请一段buffer,然后系统服务返回这个buffer应用在收到这个buffer之后就可以进行绘制,...原创 2020-03-11 03:55:14 · 638 阅读 · 0 评论 -
【Android-系统】JNIEnv定义在哪
libnativehelper/include_jni/jni.h中JNIEnv是什么?#if defined(__cplusplus)typedef _JNIEnv JNIEnv;typedef _JavaVM JavaVM;#elsetypedef const struct JNINativeInterface* JNIEnv;typedef const struct JNIIn...原创 2020-03-08 00:17:27 · 640 阅读 · 1 评论 -
【Android话题-5.5应用相关】说说Provider的启动原理
考察内容:了解ContentProvider的生命周期熟悉ContentProvider的启动流程熟悉Provider启动过程中各方通信原理为了说清楚ContentProvider的启动,我们先从它的使用开始说起ContentProvider的使用//先拿到mContentResolverContentResolver resolver = context.getContentR...原创 2020-03-03 01:40:18 · 786 阅读 · 2 评论 -
【Android话题-5.4应用相关】说说静态广播的注册和收发原理
考察内容:广播的注册原理广播的发送原理广播的接收原理(重点对比静态广播和动态广播在这三点原理的区别)静态广播的注册静态广播是在AndroidManifest.xml动态广播是在代码中注册的...//Android在启动的时候会启动PackageManagerService服务,//这个服务会去扫描已经安装的APK,解析里面的AndroidManifest文件else ...原创 2020-03-02 19:02:12 · 864 阅读 · 0 评论 -
【Android话题-5.3应用相关】说说动态广播的注册和收发原理
考察内容:广播的注册原理广播的发送原理广播的接收原理广播的注册注册广播在应用端的实现 @Override public Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter) { return registerReceiver(receiver, filter, null, null)...原创 2020-03-02 16:40:27 · 530 阅读 · 2 评论 -
【Android话题-5.2应用相关】说说service的绑定原理
考察内容:知道bindService的用法了解bindService的大致流程bindService涉及哪些参与者,通信过程是怎样的BindService的用法//1.首先要定义一个AIDL接口:IRemoteCaller mCaller;ServiceConnection mServiceConnection = new ServiceConnection(){ //3....原创 2020-03-02 01:19:34 · 332 阅读 · 0 评论 -
【Android话题-5.1应用相关】说说service的启动原理
考察内容:service启动有哪几种方式?service启动过程中主要流程有哪些?service启动过程涉及哪些参与者,通信过程是怎样的?Service启动原理用startService启动Service:@Overridepublic ComponentName startService(Intent service) { return startServiceCommon...原创 2020-03-01 18:57:58 · 340 阅读 · 0 评论 -
【Android-设计模式】适配器模式
【适配器模式的定义】:适配器模式把一个类的接口变换成客户民期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。【实力类比】:很多东西狗不吃但人吃,人吃后拉屎给狗吃屎——这个例子中的人就一个适配器!【实战】public class GoodsAdapter extends BaseAdapter { private LayoutInflater in...原创 2020-03-01 03:47:25 · 181 阅读 · 0 评论 -
【Android-设计模式】建造者模式
【Builder模式定义】:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。Builder模式中的角色:Produt产品类Builder: 抽象BuilderConcreteBuilder:具体BuilderDirector:统一组装过程以上是经典的Builder模式中的角色。然而,我在项目中常见的用法简化 了Builder模式的设计:通常是一类中包含一个...原创 2020-03-01 03:22:57 · 165 阅读 · 0 评论 -
【Android-设计模式】抽象工厂模式
抽象工厂模式定义】:为创建一组相关或者是相互依赖的对象提供一个接口,而不需要指定它们的具体类。【抽象工厂的使用场景】:一个对象族有相同的约束时可以使用抽象工厂模式。是不是听起来很抽象?举个例子,Android、IOS、WindowPhone下都有短信软件和拨号软件,两者都属于软件的范畴,但是,它们所在的操作系统平台不一样,即使是同一家公司出口的软件,其代码的实现逻辑也是不同的,这时候就可以考...原创 2020-02-25 17:58:22 · 236 阅读 · 0 评论 -
【Android-设计模式】工厂方法模式
工厂方法模式的定义:定义一个用于创建对象的接口,让子类决定实例化哪个类工厂方法模式的使用场景:在任何需要生成复杂对象的地方,都可以使用工厂方法模式。复杂对象适合使用工厂模式,用new就可以完成创建的对象无需使用工厂模式。工厂方法模式的通用模式代码:抽象产品类:public abstract class Product { /** *产品. public abstract ...原创 2020-02-25 16:18:34 · 182 阅读 · 0 评论 -
【Android话题-目录】
【Android话题-2.1系统服务】谈谈你对zygote的理解【Android话题-2.2系统服务】说说Android系统的启动【Android话题-2.3系统服务】你知道怎么添加一个系统服务吗【Android话题-2.4系统服务】系统服务和bind的应用服务有什么区别【Android话题-3.1应用进程】你知道应用进程是怎么启动的吗【Android话题-3.2应用进程...原创 2020-02-23 23:18:20 · 647 阅读 · 0 评论 -
【Android话题-3.4应用进程】谈谈你对Context的理解
考察内容:了解Context的作用熟悉Context的初始化流程深入理解不同应用组件之间Context的区别回答几个问题:应用里面有多少个Context?不同的Context之间有什么区别?Activity里面的this和getBaseContext有什么区别?getApplication和getApplicationContext有什么区别?应用组件的构造,onCreate...原创 2020-02-23 17:39:45 · 537 阅读 · 0 评论 -
【Android话题-3.3应用进程】谈谈你对Application的理解
考察内容:了解Application的作用(初级)熟悉Application的类继承关系以及生命周期(中级)深入理解Application的初始化原理(高级)Application有什么作用?(首先它是一个系统组件,生命周期很长,只要应用在,它就在)保存用户进程内的全局变量初始化操作提供应用上下文Application的特点:活得长(只有应用在,它就在)生得早(Ap...原创 2020-02-23 15:04:41 · 664 阅读 · 1 评论 -
【Android话题-3.2应用进程】应用是怎么启动Binder机制的
考察内容:了解binder是用来干什么的?(binder是用来跨进程通信的)应用里面哪些地方用到了binder机制?应用的大致启动流程是怎样的?一个进程是怎么启动binder机制的?应用启动流程什么时候支持binder机制的?boolean runOnce(){ String[] args = readArgumentList(); int pid = Zygote.fo...原创 2020-02-23 14:01:15 · 476 阅读 · 0 评论 -
【Android话题-3.1应用进程】你知道应用进程是怎么启动的吗
考察内容:了解Linux下进各启动的方式熟悉应用进程启动的基本流程深入理解应用进程启动的原理进程启动方式用fork()函数创建子进程后,在子进程的分支直接进入进程处理入口函数在子进程的分支调用execvx(path) 启动另一个可执行文件应用进程启动原理什么时候触发的进程启动?谁发起的?进程是谁启动的?怎么启动的?什么时候触发的进程启动?在启动组件的时候,如果发现...原创 2020-02-23 13:22:51 · 394 阅读 · 0 评论 -
【Android-设计模式】单例模式
有哪些单例模式:线程内线程间进程间普通单例:【实现方式1】:Double Check Lock(DCL)class Singleton { private static Singleton sInstance = null; private Singleton(){ } public void doSomething(){ Ststen,iyt,orubtk...原创 2020-02-20 10:13:39 · 201 阅读 · 0 评论 -
【Android-架构师】应用架构师基础技能
Java泛型泛型的作用与定义通配符与嵌套泛型上下边界RxJava中泛型的使用分析注解自定义注解:自定义注解与元注解注解参数与默认值注解的使用:APT,编译时注解处理器插桩,编译后处理筛选反射,运行时动态获取注解信息Retrofit中的注解并发编程线程共享和协作:CPU核心数,线程数,时间片轮转机制解读syncroized、Lock、volatile、Th...原创 2020-02-19 22:30:01 · 171 阅读 · 0 评论 -
【Android-架构师】六大原则是什么,设计模式有哪些
六大原则单一职责原则开闭原则里氏替换原则(扩展性更好的系统)依赖倒置原则(让项目变化的能力)接口隔离原则(系统有更高的灵活性)迪米特原则(更好的可扩展性)设计模式结构型模式桥接模式适配器模式装饰品模式代理模式组合模式创建型模式建造者模式单例模式抽象工厂模式工厂方法模式静态方法模式行为型模式模板方法模式策略模式观察者模式责任链模式命令模...原创 2020-02-19 22:12:10 · 202 阅读 · 0 评论 -
【android话题-4.3Activity】应用的UI线程是怎么启动的
考察内容:什么是UI线程?UI线程的启动流程,消息循环是怎么创建的了解Android的UI显示原理,UI线程和UI之间是怎么关联的?什么是UI线程?-UI线程就是刷新UI所在的线程的-UI是单线程刷新的UI线程==主线程么?对Activity来说,UI线程就是主线程Activity.runOnUiThread(Runnable)对View来说,它的UI线程就是ViewRo...原创 2020-02-17 10:21:12 · 291 阅读 · 0 评论 -
【android话题-4.2Activity】说说Actvity的显示原理
考察内容:setContextView的原理是什么?Activity在onResume之后才会显示的原因是什么?ViewRoot是干嘛的,是ViewTree的rootView么?相关问题:Activity的显示原理(Window/DecorView/ViewRoot)Activity的UI刷新机制(Vsync/Choreographer)UI的绘制原理(Measure/Layo...原创 2020-02-17 09:38:13 · 368 阅读 · 0 评论 -
【android话题-4.1Activity】说说Actvity的启动流程
考察内容:启动Activity会经历哪些生命周期回调冷启动大致流程,涉及哪些组件,通信过程是怎么样的?Activity启动过程中,生命周期回调的原理?应用端Activity启动的步骤通过ClassLoader加载APK里面的Activity类,生成Activity对象;准备好Application(并非创建,而是把之前创建好的Application返回);创建ContextI...原创 2020-02-17 09:03:46 · 364 阅读 · 0 评论 -
【Android话题-2.5系统服务】ServiceManager启动和工作原理是怎样的
考察内容:ServiceManager的启动和工作原理看以下几个问题:ServiceManager启动流程是怎样的?怎么获取ServiceManager的binder对象怎么向ServiceManager添加服务?怎么从ServiceManager获取服务?ServiceManager的启动启动进程启动Binder机制发布自己的服务等待并响应请求启动配置文件:i...原创 2020-02-15 18:28:41 · 350 阅读 · 0 评论 -
【Android话题-2.4系统服务】系统服务和bind的应用服务有什么区别
考察内容:它们在启动方式上有什么区别?它们在注册方式上有什么区别?它们在使用方式上有什么区别?启动方式上有什么区别?系统服务的启动系统服务在部分是跑在SystemServer里面private void run(){ ...... startBootstrapServices(); startCoreServices(); startOtherServices()...原创 2020-02-14 22:17:23 · 394 阅读 · 0 评论 -
【Android话题-2.3系统服务】你知道怎么添加一个系统服务吗
考察内容:了解如何使用系统服务了解系统服务调用的基本原理了解服务的注册原理如何使用系统服务?@Overridepublic Object getSystemService(String name){ return SystemServiceRegistry.getSystemService(this, name);}static Object getSystemServ...原创 2020-02-14 18:43:42 · 493 阅读 · 0 评论 -
【Android话题-2.2系统服务】说说Android系统的启动
Android有哪些主要的系统进程?这些系统进程是怎么启动的?进程启动之后主要做了些什么事?系统进程zygoteSystemServerservicemanagerhwservicemanagersurfaceflinger…重要进程的启动Zygote的启动流程init进程fork出zygote进程启动虚拟机,注册jni函数预加载系统资源启动SystemSe...原创 2020-02-14 10:20:07 · 391 阅读 · 0 评论 -
【Android】Framework简述
【AMS的作用】AMS是Android中最核心的服务,主要负责系统中四大组件的启动、切换、调度及应用进程的管理和调度等工作,其职责与操作系统中的进程管理和调度模块类似。【PKMS的作用】负责系统中Package的管理,应用程序的安装、卸载、信息查询等。【PKMS构造函数的主要功能】扫描Android系统中几个目标文件夹中的APK,从而建立合适的数据结构以管理诸如Package信...原创 2020-02-13 21:22:57 · 199 阅读 · 0 评论 -
【Android话题-2.1系统服务】谈谈你对zygote的理解
这道题想考察什么?了解Zygote的作用(初级) 熟悉Zygote的启动流程(中级) 深刻理解Zygote的工作原理(高级)-------------------------------------------------------------------------1. Zygote的作用是什么?启动SystemServer 孵化应用进程资源:常用类 JNI函数 主题...原创 2020-02-13 15:56:40 · 508 阅读 · 1 评论 -
【Android】@GuardedBy注解
在ActivityThread中看到如下的用法: @GuardedBy("mResourcesManager") final ArrayMap<String, WeakReference<LoadedApk>> mPackages = new ArrayMap<>(); @GuardedBy("mResourcesManager")...转载 2020-02-12 16:42:24 · 1171 阅读 · 0 评论 -
【Android-PKMS】APK安装过程
【从一个APK安装另一个APK】首先是从context获得PackageManager句柄,然后调用installPackage()进行安装ContextImpl.java::getPackageManager() pm = ActivityThread.java::getPackageManager(){ //最终获得PackageManagerService服务...原创 2020-02-10 17:00:34 · 794 阅读 · 0 评论 -
【Android】如何查看已安装的apk声明的权限
adb pull /data/system/packages.xml在packages.xml中找到对应apk的包名及对应的权限声明原创 2020-02-02 10:56:56 · 2012 阅读 · 0 评论 -
【Android-PKMS】启动分析
【注】PKMS=PackageManagerServicePMS=PowerManagerServicePKMS负责Android系统中Package的安装、升级、卸载、查询功能。【PKMS的启动】PKMS作为系统的核心服务,由SystemServer创建按函数的嵌套调用关系化简PKMS的启动流程SystemServer.java::run(){ //P0:Sys...原创 2020-02-01 17:34:44 · 687 阅读 · 0 评论 -
【Android-AMS】startActivity分析(之二)
重要函数调用关系按函数的嵌套调用关系化简Activty启动流程:【预备部分】:从某个Activty通过调用startActivity来启动另外一个Activity开始当一个Activity想启动另一个Activity时,最常见的方式是:Intent intent = new Intent(...);context.startActivity(intent);context...原创 2020-01-30 16:03:40 · 1043 阅读 · 0 评论 -
【Android-AMS】startActivity分析(之一)
Activity的管理(几个重要文件的组织关系)AMS中的Activity主要通过以下几个类来管理:ActivityManagerService.javaActivityStackSupervisor.java 、其内部类ActivityDisplayActivityStack.javaTaskRecord.javaActivityRecord.java下面通过几段代...原创 2020-01-22 09:47:07 · 827 阅读 · 0 评论 -
【Android-AMS】ActivityManagerService启动分析
(Android 8.1)本文参考了邓平凡的《深入理解Android卷2》第6章 “深入理解ActivityManangerService。该书虽然有点老,2012年出版,但仍然是Android源码分析的经典,即使是到了2020年的现在,如果你想深入解理Android,它仍然是一个很好选择。由于Android版本的升级,部分代码有些变化,但这不影响你对整体构架的理解。本文就是阅读该书时对照A...原创 2020-01-15 16:05:42 · 707 阅读 · 0 评论 -
Android-如何设置APP开机启动(图文)
方案:第一步:接收“开机完成”广播:android.intent.action.BOOT_COMPLETED;第二步:在广播接收器中启动HelloApp:AndroidManifest.xml:<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk...原创 2018-03-13 14:46:13 · 22802 阅读 · 1 评论 -
AndroidStudio关联GitHub时应该忽略的文件
选择File->Settings:注意:已经上传的文件无法通过以上操作从github删除!因此请在关联之前进行以上操作!如何关联参考:http://blog.csdn.net/u010937230/article/details/53511863...原创 2018-03-13 18:24:13 · 260 阅读 · 0 评论