Activtiy简介

Activity是什么?
活动(Activity)是android开发中使用的最多,也是最基础的组件了。每当我们创建一个新的工程,ADT会为我们默认创建一个MainActivity.class的java文件和activity_main的布局文件,并在AnroidManifest.xml(清单文件)中注册好。这就是一个activity中所必备的三元素(java文件,xml布局文件,清单文件中注册activity)。

Activity功能是什么?
Android的诞生之初,是基于web技术的mvc设计模式的。Activity是一种可以包含用户界面的组件,提供一个屏幕,主要用于和用户进行交互。从分类中就能看到java文件就是C层,xml布局文件就是V层,实现了逻辑和视图分离 。那V和C是如何关联起来的呢?在Activity中的onCreate的方法中调用。
setContentView(R.layout.activity_main);
Activity中实际调用的是Window的setContentView方法,作用是将View加载到根view,其内部封装了xml布局的加载器,它将xml布局加成成了一View,使得Activity可以对view进行控制。

Activity的生命周期:
四钟状态:
1、重新启动:这个activity回到屏幕前面获得用户焦点。
2、暂停:另一个activity回到屏幕前面,activity被暂停,另一个activity可能不是完全覆盖屏幕,暂停的activity活着,能可视。但是内存低的时候会被杀死。(如有的电话来电时候应用的界面半隐藏藏在通话界面的后面)。
3、停止:如果activity被另一个activity完全遮盖,但是还活着,在内存中,然而但内存需要的时候就被干掉。
4、销毁:当一个活动从返回栈中移除后就变成了销毁状态。系统会最倾向于回收处于这种状态的活动,从而保证手机的内存充足。

Activity 类中定义了七个回调方法,覆盖了活动生命周期的每一个环节,下面我来一一介绍下这七个方法。

  1. onCreate()

这个方法你已经看到过很多次了,每个活动中我们都重写了这个方法,它会在活动

第一次被创建的时候调用。你应该在这个方法中完成活动的初始化操作,比如说加载布

局、绑定事件等。

  1. onStart()

这个方法在活动由不可见变为可见的时候调用。

  1. onResume()

这个方法在活动准备好和用户进行交互的时候调用。此时的活动一定位于返回栈的

栈顶,并且处于运行状态。

  1. onPause()

这个方法在系统准备去启动或者恢复另一个活动的时候调用。我们通常会在这个方

法中将一些消耗CPU 的资源释放掉,以及保存一些关键数据,但这个方法的执行速度

一定要快,不然会影响到新的栈顶活动的使用。

  1. onStop()

这个方法在活动完全不可见的时候调用。它和onPause()方法的主要区别在于,如

果启动的新活动是一个对话框式的活动,那么onPause()方法会得到执行,而onStop()

方法并不会执行。

  1. onDestroy()

这个方法在活动被销毁之前调用,之后活动的状态将变为销毁状态。

  1. onRestart()

这个方法在活动由停止状态变为运行状态之前调用,也就是活动被重新启动了。

以上七个方法中除了onRestart()方法,其他都是两两相对的,从而又可以将活动分为三
种生存期。
activity活动示意图
1、开始一个App时,第一个Activity启动(记作A):onCreate->onStart->onResume,按下BACK键:onPause->onStop->onDestroy。
2、再启动A:onCreate->onStart->onResume,按下HOME键:onPause->onStop。再显示A:onRestart->onStart->onResume。
3、从A跳转到B:A.onPause->B.onCreate->B.onStart->B.onResume->A.onStop。
4、B.finish返回到A:B.onPause->A.onRestart->A.onStart->A.onResume->B.onStop->B.onDestroy。
5、A.finish或按BACK键:onPause->onStop->onDestroy。
6、A已启动,旋转屏幕竖->横:onPause->onStop->onDestroy,onCreate->onStart->onResume。
7、再旋转屏幕横->竖:onPause->onStop->onDestroy,onCreate->onStart->onResume。
8、A已启动,点击一个按钮,弹出对话框(Dialog),A部分可见,再关闭对话框:不会回调任何函数。
9、清单中改B的theme=”@android:style/theme.Dialog”。A已启动,A跳转到B,A部分可见:A.onPause->B.onCreate->B.onStart->B.onResume。
10、再B.finish返回到A:A.onResume->B.onStop->B.onDestroy。
11、代码中改B的setTheme(android.R.style.Theme_Dialog),A已启动,A跳转到B,B的外观跟9一样,但A完全不可见:回调过程跟3一样。
12、再B.finish返回到A:回调过程跟4一样。

欢迎关注我Github : @ 我的github

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值