Serivce 篇 8 - Service stopSelf 流程分析
本文基于 Android 7.1.1 源码分析,转载请说明出处! 0 综述对于 Service,我们除了可以调用 stopService 来停止服务,服务自身也可以调用 stopSelf 方法停止,下面我们来看看这几个方法!1234567891011121314151617181920212223242526public final void stopSelf() { stopSe ...
阅读更多
Serivce 篇 7 - Service restart 流程分析
本文基于 Android 7.1.1 源码分析,转载请说明出处! 0 综述当服务被 kill 掉后,会根据 onStartCommand 方法的返回值,来决定是否对服务进行重启,我们先来回顾下返回值类型: START_STICKY: START_STICKY_COMPATIBILITY: 删除本次启动的 startId 对应的启动项; 设置服务的 stopIfKilled 为 false; ...
阅读更多
BroadcastReceiver篇 7 - BroadcastReceiver 广播机制总结
基于 Android 7.1.1 分析 BroadcastReceiver 组件的机制,本文为作者原创,转载请说明出处! 0 综述本篇文章总结一下广播和广播接收者相关的知识点,广播是 Android 组件间的通信方式,本质上是 Intent 意图,可用于以下场景: 同一应用内部的同一进程间; 同一应用内部的不同进程间的不同组件的通信; 1 广播的使用Android 系统的广播,本质上就是 In ...
阅读更多
Serivce 篇 6 - startForeground 和 stopForeground 分析
本文基于 Android 7.1.1 源码分析,转载请说明出处! 0 综述我们可以通过 startForeground 方法来将一个服务设置成前台服务,具体的使用如下:123456789101112131415161718192021222324252627private void initNotification(Context context) { Notification.B ...
阅读更多
BroadcastReceiver篇 6 - LocalBroadcastManager 分析
[toc] 本文基于 Android 7.1.1 源码,分析 LocalBroadcastManager 机制! 0 前言BroadcastReceiver 是基于 Binder 通信的,其可以用于跨进程的通信,而 LocalBroadcastManager 是基于 Handler 的,其适用于进程内的通信,在进程内进行局部广播发送与注册。 相比 BroadcastReceiver 的广播,Loc ...
阅读更多
Serivce 篇 5 - unbindService 流程分析
本文基于 Android 7.1.1 源码分析,转载请说明出处! 0 综述我们通过 bindService 绑定的服务,需要通过 unbindService 来解除绑定: 1context.unbindService(conn); 以前我们只是会调用,但是其底层的调用到底是什么样的呢?知其然知其所以然,今天我们就来学习下 unbindService 的过程! 1 发起端进程1.1 ContextW ...
阅读更多
Process篇 6 - 从 dumpsys meminfo 看进程的优先级
0 前言基于 android 7.1.1 源码,分析和总结 Process 相关知识! 1 dumpsys meminfo –oomdumpsys meminfo 可以来看系统的内存使用情况,这里我们重点关注:Total PSS by OOM adjustment: 默认的 dumpsys meminfo 是出了可以看 Total PSS by OOM adjustment,还可以看 Total ...
阅读更多
Serivce 篇 4 - bindService 流程分析
本文基于 Android 7.1.1 源码分析,转载请说明出处! 0 综述我们在应用中经常会启动 Service: 1context.bindService(intent, mConnection, Service.BIND_AUTO_CREATE); 以前我们只是会调用,但是其底层的调用到底是什么样的呢?知其然知其所以然,今天我们就来学习下 bindService 的过程! 如果之前并不了解这块 ...
阅读更多
Process篇 5 - 进程的 oomAdj 调度算法
[toc] 基于 Android 7.1.1 源码,总结进程状态调整的调度策略! 1 进程 oomAdj 的调度方法和进程的 oomAdj 调度相关的主要有`3 个方法: updateOomAdjLocked:用于更新进程的 adj,该方法会依次调用 computeOomAdjLocked 和 applyOomAdjLocked; computeOomAdjLocked:计算进程的 adj,返回 ...
阅读更多
BroadcastReceiver篇 5 - sendBroadcast 流程分析
[toc] 本文基于 Android 7.1.1,分析发送广播的流程,转载请说明出处! 写本文的目的: 了解广播发送的流程; 了解 AMS 对广播接收者组件的管理; 记录自己的研究和分析; 0 综述在 Android 系统中,有如下种类的广播,他们的发送方式各不一样,我们先来简单的了解一下: 1. 普通广播 发送普通广播的方法如下:123sendBroadcast(...)sendBroadc ...
阅读更多