精通Activity

在平时开发中,Activity我们每个人应用的都滚瓜烂熟,回忆起来没有太难的地方,但是我们学习知识不应该只知其一不知其二,这样才能在学习的道理上越走越远,今天我要给大家分享的内容会让大家明白一些Android内部的实现机制以及Activity在整个FrameWork层是如何交互处理的和FrameWork层是如何管理Activity的生命周期的。学习之前建议大家把FrameWork的源码下载下来,下载地址:https://github.com/android/platform_frameworks_base

一、FrameWork相关类介绍

1、ActivityThread

ActivityThread本身不是一个线程,就是就jave里的一个普通的类,我们在启动一个APP应用当中,主进程会调用ActivityThread。调用完ActivityThread类之后,会做以下工作,也就是mian()方法里的内容:Looper.preparMianLooper()、ActivityThread thread=new ActivityThread ()、thread.attach(false)、Looper.loop()。当这些方法完成之后ActivityThread就会通知AMS,拿到远程代理对象IActivityManager mgr=ActivityManagerNative.getDefault();mgr.attachApplication()

2、ApplicationThread

这个类继承了ApplicationThreadNative,而ApplicationThreadNative是Binder的子类,那么说明ApplicationThread需要和远程端进行通信,主要是和ActivityMangerService进行通信。

3、ActivityClientRecord

ActivityClientrecord类里定义了许多和Activity相关的成员变量

二、Context类介绍

Context是一个接口,它有具体如下的实现类:Context——>ContextWrapper——>ContextThemeWrapper——>Activity

Context——>ComtextImpl

ContextWrapper——>Service

ContextWrapper——>Application

Context里其实定义了一些和Activity息息相关的资源,如sendBroadCast()、registerReceiver()等等,下面我来说一说Context的几个子类。

1、ContextWrapper

假如你看过这个类的源码,会发现,这里所有重写的方法都用到了一个全局变量mBase,我列出来了一个ContextWrapper类里的方法如下:

 @Override
    public Resources getResources()
    {
        return mBase.getResources();
    }

那么这个全局变mBase代表什么呢,我们来看一下这个类的构造方法,发现mBase就是Context 的对象并且在构造方法里给mBase赋值了,代码如下:

Context mBase;

    public ContextWrapper(Context base) {
        mBase = base;
    }

上面讲了一些铺垫内容,下面我要说一说Activity的生命周期

其实就是ActivityThread这个类控制着Activity生命周期的一些回调,具体的是由ActivityMangerService跨进程通信调用的,在ActivityThread的源码里有一个H类,这个H类实现了Handler,这个H类的作用就是处理ActivityMangerService跨进程通信发送过来的消息。在Activity生命周期回调的过程中,有几个重要的类和概念。

1、instrumentation类

主要作用是回调Activity生命周期的各个方法和打开Activity,也可以创建Application对象

时间: 2024-10-11 04:24:35

精通Activity的相关文章

Android基础入门教程——4.2.3 Service精通

Android基础入门教程--4.2.3 Service精通 标签(空格分隔): Android基础入门教程 本节引言: 本节,我们继续来研究Service(服务)组件,本节将会学习下Android中的AIDL跨进程通信的一些 概念,并不深入到源码层次,暂时知道是什么,会用即可!开始本节内容~ 本节对应官方文档:Binder 1.Binder机制初涉 1)IBinder和Binder是什么鬼? 我们来看看官方文档怎么说: 中文翻译: IBinder是远程对象的基本接口,是饿了高性能而设计的轻量级

内存泄露从入门到精通三部曲之排查方法篇

内存泄露从入门到精通三部曲之排查方法篇 最原始的内存泄露测试 重复多次操作关键的可疑的路径,从内存监控工具中观察内存曲线,是否存在不断上升的趋势且不会在程序返回时明显回落.这种方式可以发现最基本,也是最明显的内存泄露问题,对用户价值最大,操作难度小,性价比极高. MAT内存分析工具 2.1 MAT分析heap的总内存占用大小来初步判断是否存在泄露 在Devices 中,点击要监控的程序. 点击Devices视图界面中最上方一排图标中的“Update Heap” 点击Heap视图 点击Heap视图

Android企业级应用程序开发完整训练:精通Android商业级开发最佳实践的24堂课

从企业级商业实战的角度入手,24小时内通过23个动手实战案例,循序渐进的对Android商业级别的应用程序开发要点各个击破,依托于在多年的Android(6款完整的硬件产品和超过20款应用软件)开发和企业级培训经验(超过150期的次Android的企业内训和公开课),旨在在实务的基础之上帮助你完成任何复杂程序的高质量Android应用程序开发,让Android开发跟上想象的速度.最后,通过ActivityManagerService揭秘Android应用程序一切行为背后的核心根源,让你从此开发应

activity生命周期中方法解析

对于activity的生命周期我觉得是一个简单而又不简单的问题,很多人可能觉得自己已经很精通了!往往事实却不以为然! 要接着讨论下面的问题,先来简单了解一下activity,来看一段原文的说明,如下: An activity is a single, focused thing that the user can do.  Almost all activities interact with the user, so the Activity class takes care of creat

文章之间的基本总结:Activity生命周期

孔子:温故而知新.它可以作为一个教师.<论语> 同样的学习技巧.对于技术文件或书籍的经典技术,期待再次看到它完全掌握,这基本上是不可能的,所以,我们常常回来几次,然后仔细研究,为了理解作者的思想精髓. 最近,他想了一下约Activity生命周期,參看了相关书籍和官方文档.也有了不小的收获.对于曾经的认知有了非常大程度上的改善,在这里和大家分享一下. 熟悉javaEE的朋友们都了解servlet技术,我们想要实现一个自己的servlet,须要继承对应的基类.重写它的方法,这些方法会在合适的时间被

Android基础新手教程——4.2.3 Service精通

Android基础新手教程--4.2.3 Service精通 标签(空格分隔): Android基础新手教程 本节引言: 本节,我们继续来研究Service(服务)组件,本节将会学习下Android中的AIDL跨进程通信的一些 概念,并不深入到源代码层次.临时知道是什么.会用就可以.開始本节内容~ 本节相应官方文档:Binder 1.Binder机制初涉 1)IBinder和Binder是什么鬼? 我们来看看官方文档怎么说: 中文翻译: IBinder是远程对象的基本接口,是饿了高性能而设计的轻

Android 开发从入门到精通

如今的安卓开发越来越火,很多人投身到安卓的开发之中. 1. 疯狂Android讲义(第2版) 第一版荣获"电子工业出版社最畅销图书奖":累计印刷10次,销售码洋二百余万,是Android学习.开发人员必备之选. 本书深入阐述了Android应用开发的Activity.Service.BroadcastReceiver与ContentProvider四大组件,并详细介绍了Android全部图形界面组件的功能和用法,Android各种资源的管理与用法,Android图形.图像处理,事件处理

Android精通教程-第一节Android入门简介

前言 大家好,给大家带来Android精通教程-第一节Android入门简介的概述,希望你们喜欢 每日一句 If life were predictable it would cease to be life, and be without flavor. --- Eleanor Roosevelt 入门工具的安装 第一步:要下载的朋友注意了,先看完教程了解个大概,下载Android studio前,先安装jdk和IDE,Android SDK 第二步:下载jdk,提供JDK 9 地址: htt

android Activity 的生命周期 以及横屏竖屏切换时 Activity 的状态变化

生命周期Android 系统在Activity 生命周期中加入一些钩子,我们可以在这些系统预留的钩子中做一些事情.例举了 7 个常用的钩子:protected void onCreate(Bundle savedInstanceState)protected void onStart()protected void onResume()protected void onPause()protected void onStop()protected void onRestart()protecte