随笔分类 -  android原理/关系

1 2 3 下一页
getApplication()和getApplicationContext()区别
摘要:二者使用结果相同,我们写个代码分别打印二者返回结果,发现两个方法获取的是同一个对象。 结果 区别 getApplication()是用来获取Application实例的,但是该方法只在Activity和Service中才能调用;在一些其他的地方,比如说当我们在BroadcastReceiver中也想 阅读全文
posted @ 2019-12-06 14:49 mingfeng002 阅读(7430) 评论(0) 推荐(0)
Activity启动模式分类(一)
摘要:standerd 默认模式,每次启动Activity都会创建一个新的Activity实例。 比如:现在有个A Activity,我们在A上面启动B,再然后在B上面启动A,其过程如图所示: singleTop 如果要启动的Activity已经在栈顶,则不会重新创建Activity,只会调用该该Acti 阅读全文
posted @ 2019-10-28 18:12 mingfeng002 阅读(875) 评论(0) 推荐(0)
Activity启动场景Task分析(二)
摘要:场景分析 下面通过启动Activity的代码来分析一下: 1.桌面 首先,我们看下处于桌面时的状态,运行命令: 结果如下 实际上就是如下图所示的结构,这里的Stack #0就是ActivityStackSupervisor中的mHomeStack,mHomeStack管理的是Launcher相关的任 阅读全文
posted @ 2019-10-28 18:12 mingfeng002 阅读(633) 评论(0) 推荐(0)
Activity启动流程(三)
摘要:这里对启动Activity过程中涉及到的ActivityStack、TaskRecord、ActivityRecord、ActivityStackSupervisor进行简单的分析,实际上一张时序图就可以看明白了。相关的代码都在上面了:代码分析 sequenceDiagramparticipant 阅读全文
posted @ 2019-10-28 18:12 mingfeng002 阅读(342) 评论(0) 推荐(0)
Parcel在binder通信readStrongBinder和writeStrongBinder
摘要:Binder IPC通信中,Binder是通信的媒介,Parcel是通信的內容。远程调用过程中,其参数都被打包成Parcel的形式来传递。 在IPC通信的Proxy端,我们经常可以看到下面类似的代码,一些参数都会打包到Parcel中。看下面的data和reply。 在IPC通信里,android是通 阅读全文
posted @ 2019-09-11 17:50 mingfeng002 阅读(3239) 评论(0) 推荐(0)
Android Bitmap变迁与原理解析(4.x-8.x)
摘要:App开发不可避免的要和图片打交道,由于其占用内存非常大,管理不当很容易导致内存不足,最后OOM,图片的背后其实是Bitmap,它是Android中最能吃内存的对象之一,也是很多OOM的元凶,不过,在不同的Android版本中,Bitmap或多或少都存在差异,尤其是在其内存分配上,了解其中的不用跟原 阅读全文
posted @ 2019-08-23 18:03 mingfeng002 阅读(1255) 评论(0) 推荐(0)
Binder进程与线程ProcessState以及IPCThreadState
摘要:ProcessState以及IPCThreadState ProcessState是负责打开Binder节点并做mmap映射,IPCThreadState是负责与Binder驱动进行具体的命令交互。 ProcessState 实现ProcessState的主要关键点有以下几个: 保证同一进程只有一个 阅读全文
posted @ 2019-06-07 21:28 mingfeng002 阅读(3284) 评论(0) 推荐(0)
Binder的Native实现libbinder
摘要:libbinder – Binder的Native实现 出于性能和代码统一性的角度考虑,Binder IPC并不Java和Native环境里各实现一次,而只是分别在不同的执行环境里提供使用的接口。使用Binder的Java代码,通过一些使用Binder的Java类之后,必须会走入到Native环境, 阅读全文
posted @ 2019-06-07 19:41 mingfeng002 阅读(2914) 评论(0) 推荐(0)
Android的Surface的创建
摘要:ViewRootImpl管理着整个view tree。 对于ViewRootImpl.setView(),我们可以简单的把它当做一个UI渲染操作的入口。 http://androidxref.com/6.0.1_r10/xref/frameworks/base/core/java/android/v 阅读全文
posted @ 2019-06-04 19:41 mingfeng002 阅读(3919) 评论(0) 推荐(0)
android dialog,popupwindow,toast窗口的添加机制
摘要:Dialog 窗口添加机制 代码示例 首先举两个例子: 例子1 在Activity中 例子2 例子3 为什么会出现以上两种输出结果,看以下分析。 Dialog源码分析Dialog是一系列XXXDialog的基类,我们可以new任意Dialog或者通过Activity提供的onCreateDialog 阅读全文
posted @ 2019-06-03 10:39 mingfeng002 阅读(2509) 评论(1) 推荐(1)
Android在WindowManagerService和ActivityManagerService中的Token
摘要:https://upload-images.jianshu.io/upload_images/5688445-6cf0575bb52ccb45.png 1. ActivityRecord中的token ActivityRecord在ActivityStackSupervisor的startActiv 阅读全文
posted @ 2019-05-31 16:00 mingfeng002 阅读(1627) 评论(0) 推荐(0)
android window(四)WindowToken
摘要:在WindowManagerService中有两种常见的Token,WindowToken,和AppWindowToken。 WindowToken http://androidxref.com/6.0.1_r10/xref/frameworks/base/services/core/java/co 阅读全文
posted @ 2019-05-30 19:41 mingfeng002 阅读(2138) 评论(0) 推荐(0)
android window(三)lWindow添加流程
摘要:http://androidxref.com/6.0.1_r10/xref/frameworks/base/services/core/java/com/android/server/wm/WindowManagerService.javahttp://androidxref.com/6.0.1_r 阅读全文
posted @ 2019-05-30 15:09 mingfeng002 阅读(2993) 评论(1) 推荐(2)
Android Framework中Thread类
摘要:Thread类是Android为线程操作而做的一个封装。代码在Thread.cpp中,其中还封装了一些与线程同步相关的类。 Thread类 Thread类的构造函数中的有一个canCallJava Thread.cpp /system/core/libutils/Threads.cpp 线程创建流程 阅读全文
posted @ 2019-05-09 19:37 mingfeng002 阅读(1532) 评论(0) 推荐(0)
Binder 驱动(三)
摘要:Binder 驱动是 Binder 的最终实现, ServiceManager 和 Client/Service 进程间通信最终都是由 Binder 驱动投递的。 Binder 驱动的代码位于 kernel 代码的 drivers/staging/android 目录下。主文件是 binder.h  阅读全文
posted @ 2019-04-12 18:31 mingfeng002 阅读(1139) 评论(0) 推荐(1)
Binder Native 层(二)
摘要:Binder 框架及 Native 层 Binder机制使本地对象可以像操作当前对象一样调用远程对象,可以使不同的进程间互相通信。Binder 使用 Client/Server 架构,客户端通过服务端代理,经过 Binder 驱动与服务端交互。 Binder 机制实现进程间通信的奥秘在于 kerne 阅读全文
posted @ 2019-04-12 18:30 mingfeng002 阅读(1307) 评论(0) 推荐(0)
ActivityManager的代理模式
摘要:从官方文档的介绍可以看到ActivityManager的作用: 是与系统所有正在运行着的Acitivity进行交互,对系统所有运行中的Activity相关信息(Task,Memory,Service,App) 进行管理和维护;提供了相应的接口用于获取这些信息。 但是这些信息真正维护并不是Activi 阅读全文
posted @ 2019-04-03 17:43 mingfeng002 阅读(1459) 评论(0) 推荐(0)
Android deeplink和AppLink原理
摘要:APP开发中经常会有这种需求:在浏览器或者短信中唤起APP,如果安装了就唤起,否则引导下载。对于Android而言,这里主要牵扯的技术就是deeplink,也可以简单看成scheme,Android一直是支持scheme的,但是由于Android的开源特性,不同手机厂商或者不同浏览器厂家处理的千奇百 阅读全文
posted @ 2019-03-28 10:26 mingfeng002 阅读(9690) 评论(0) 推荐(0)
Service启动流程
摘要:Service启动流程从整个宏观上来看,它的模型如下 startService启动流程时序图 Activity中使用的startService方法是定义在Context的抽象类中,它的真正实现者是ContextImpl,所以我们首先进入ContextImpl类 (1)ContextImpl.star 阅读全文
posted @ 2019-03-25 11:15 mingfeng002 阅读(789) 评论(0) 推荐(0)
Android可见APP的不可见任务栈(TaskRecord)销毁分析
摘要:Android依托Java型虚拟机,OOM是经常遇到的问题,那么在快达到OOM的时候,系统难道不能回收部分界面来达到缩减开支的目的码?在系统内存不足的情况下,可以通过AMS及LowMemoryKiller杀优先级低的进程,来回收进程资源。但是这点对于前台OOM问题并没有多大帮助,因为每个Androi 阅读全文
posted @ 2019-03-22 16:41 mingfeng002 阅读(1006) 评论(0) 推荐(0)

1 2 3 下一页