Google官方Android开发资料整理之-性能优化详解
本篇整理谷歌官方关于Android开发性能的资料。 Guide to app performance | Android Developers Inspecting performance Inspecting performance | Android Developers The Android Profiler | Android Developers Profiling and tracing System tracing Overview of system tracing | Android Developers Capture trace The Android Profiler | Android Developers Capture a system trace on a device | Android Developers Capture a system trace on the command line | Android Developers Navigate a Systrace report | Android...
Google官方Android开发资料整理之-性能优化工具使用
对于Android开发,谷歌的开发者网站非常友好,里面有非常全面的开发资料,其实很多博客的资料都是来源于官方,但是相对没有官方全面,因此为了系统的学习官方的资料,本篇开始整理官方的一些Android开发资料。 Google官方资料 Profile your app performance | Android Studio | Android Developers Inspect CPU Activity Inspect CPU activity with CPU Profiler | Android Studio | Android Developers Record traces | Android Studio | Android Developers Export traces | Android Studio | Android Developers Import traces | Android Studio | Android Developers Inspect traces | Android Studio | Android...
Android系统源码分析--Service启动流程
在前面文章我们分析了四大组件中的两个:Broadcast和Activity,这章我们分析四大组件中的服务(Service)的启动过程。Service的启动方式有两种:一种是startService,一种是bindService;第一种通常是开启一个服务执行后台任务,不进行通信,第二章通过是启动服务进行通信。下面我们就根据这两种启动方式来讲Service的启动流程以及unbindService和stopService流程。 Service启动流程-startService首先来看启动流程时序图: Step0.ContextImpl.startService12345@Overridepublic ComponentName startService(Intent service) { warnIfCallingFromSystemProcess(); return startServiceCommon(service,...
Android系统源码分析--Activity的finish过程
上一篇我们分析了Activity的启动流程,由于代码量很大,还是没有分析的很详细,但是基本流程都出来了,更详细的东西还是要去看源码,源码在我文章的最后有给出,里面有我添加的详细的注释。这一章来分析Activity的finish过程,这个问题在两年前我去面试金山的时候曾经被问到过,那时候对源码基本没什么了解,所以当时根本是不了解的,今天我们就来分析一下finish的过程到底做了哪些处理,最后对Activity的整个启动过程以及finish过程绘制流程图,以方便我们记忆。 finish代码分析首先先贴一张时序图: Activity的finish方法就是调用的父类的finish方法: Step1.Activity.finish123public void finish() { ...
Android系统源码分析--Activity启动过程
关于Activity的源码分析拖延了太久的时间,由于最近工作繁忙,加上Activity启动源码非常复杂,涉及的内容很多,所以花费了很长是时间才来写这篇源码分析,希望这篇分析能让我们很容易的理解Activity的启动流程,能解决我们在使用Activity过程中遇到的问题,这样就达到了我们对于源码分析的目的了。下一篇我们介绍Activity的finish过程。 Activity启动模式简介:我们知道Activity启动模式有四种,每一种都有不同的操作,直接影响我们App的设计,为了帮助我们理解源码,我们先分析一下这四种模式。这四种模式包括:standard, singleTop, singleTask 和 singleInstance。 (下面内容来自:Activity启动模式图文详解:standard, singleTop, singleTask 以及...
Android系统源码分析--Broadcast发送
上一篇分析了Android系统中广播的注册和注销,这一篇我们继续分析发送广播的源码流程,广播的发送相对来说比较复杂,所以需要比较长的时间来看,如果你看懂了流程相对来说再研究流程中的细节就比较简单了。 先看一张时序图,因为里面涉及到循环过程,代码中会提到,但是时序图没有绘制,所以需要注意一下。 0、ContextImpl.sendBroadcast123456789101112131415161718192021222324252627282930313233343536373839/** * 发送广播 * 步骤: * 1.广播发送者,即一个Activity组件或者一个Service组件,将一个特定类型的广播发送给AMS * <p> * 2.AMS接收到一个广播后,首先找到与这个广播对应的广播接收者,然后将它们添加到一个广播调度队列中, * 最后向AMS所运行在的先从的消息队列发送一个类型为BROADCAST_INTENT_MSG的消息,这时候对广播发送 * 者来说,一个广播就发送完了。 * <p>...
Android系统源码分析--Broadcast注册和注销
距离上一篇博客进程的加载过了很久的时间,这中间换了一份工作,加入了新的团队,也开始了新的项目,比较忙,所以最近才有时间将四大组件之一的广播原理看完,最近一段时间会相继把四大组件分析写完,让我们对四大组件有更深的了解。本来想一篇把广播的内容写完,但是发现要解释的代码比较多,所以还是分开来讲,那么这篇先分析广播的注册和注销,下一篇再分析广播的发送。 Broadcast的注册 Step-1:注册广播入口ContextImpl.registerReceiver:1234@Overridepublic Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter) { return registerReceiver(receiver, filter, null, null);} 然后调用registerReceiver复写方法: 123456@Override public Intent registerReceiver(BroadcastReceiver...