Activity是个神马玩意儿,和Android有神马关系,为什么毛要用这个,这个怎么用。本篇讲针对Activity做出详细描述,希望大家在看完这篇文章后,对Activity有个大概的了解。
1.啥是Activity?
初学者可以这样理解,Activity相当与一个android应用的界面(其实这样的说法不准确,但很好理解对吧),用户往往是直接操作应用的界面的,我们可以变相的说,这就是在操作Activity。学过Java的同学可以这样理解,这就是一个继承Activity的类,为什么要说继承呢,一个应用不会只有一个界面吧?所以通过继承,可以创建多个Activity,也就是多个界面,这样说,应该懂了吧。
2.为什么要用这个呢?
通过上面的介绍,相信大家已经勉强了解了Activity是个啥,所以,为什么要用呢,因为一般应用都有界面啊,想要有界面,就得用Activity,为了显示用户界面,所以我们要用它。
3.怎么用
首先我们新建一个项目,打开MainActivity,如果你是第一次看到一长串的代码,是不是已经有点晕头转向了呢,别急,我们慢慢来看,我们直接来看这个类的定义,暂时不去看内容是什么,反正都是一些听都没听过的方法。
我们发现这个类是继承自一个叫Activity的类,那么这个类也就可以变相的说是一个Activity了,接下来我们开始思考一下Activity的生命周期,为什么要引入一个生命周期的概念呢,幻想一下,假设你在使用一个应用,这个应用有很多界面,这时候我们一说,这个应用有很多的Activity,假设我们在A界面,点击了一个按钮,然后我们跳的了B界面,现在手机屏幕上显示的是B界面了,那么A界面呢,A界面怎么了,无论如何,我都是为了A界面敲代码了的,现在A界面不见了,这是几个意思?这时候我们点击了一下手机的退回按钮,呀哈,A界面回来了,略屌,好吧,不讲废话了,直接引入生命周期的概念吧。
这是一张非常经典的Activity的生命周期图。
学过Java的都知道,方法名都是xxx();这种样子的,或者是xxx(参数)这种样子的,所以我们可以根据生命周期图提取Activity的七大方法。
分别是
onCreate(Bundle savedInstanceState)
onStart()
onResume()
onPause()
onStop()
onRestart()
onDestroy()
我们可以这样理解
onCreate(Bundle savedInstanceState):创建,相当于有一个短跑比赛,裁判召集了选手
onStart():开始,相当于开跑之前,运动员做好准备
onResume():启动,相当于裁判说“跑!”
之后运动员处于奔跑状态,相当于activity正在运行。
onPause():暂停,相当于在比赛途中裁判突然说:“等一下!”
表示有一个新的界面出现了,按钮按下跳到B界面了
onStop():停止,相当于运动员听到指令后刹住脚
A界面被压到B界面下面动弹不得
onRestart():重新开始,相当于裁判说“刚刚不算,重新来”,那么到这里重新来就要运动员再次做好准备onStart(),然后裁判说跑onResume()
onDestroy():相当于比赛结束,各回各家。
注:初学者可能会分不清onPause()和onStop(),我们可以理解为,onPause()是裁判在喊停,运动员只是听到裁判喊停了,但由于惯性,身体还没有听下来, onStop()则表示运动员的身体也停下来了。专业一点就是,onPause()表示系统下达了停止运行的命令,但在下达命令的时候,程序还在运行,onStop()则表示程序停止了。是不是这样要好理解些呢。
哪什么时候会调用这些方法呢
通过以上的比喻,我们可以很清晰的知道,当一个Activity运行的时候(当运动员在跑的时候),会执行前三个方法,而且是连续不断的执行,
onCreate(Bundle savedInstanceState)-->onStart()-->onResume()-->activity处于运行状态(running)
假设发生了界面跳转,
onPause()-->onStop()-->动弹不得
假设点击返回键回到A界面
onRestart()-->onStart()-->onResume()
注意,这里没有执行onCreate(Bundle savedInstanceState)方法了,为什么呢,仔细想想,运动员已经找到了,就不需要再去找一次了
假设点击返回按钮,回到手机的主界面
onPause()-->onStop()-->onDestroy()
比赛完成,当然,这里的onDestroy()方法也只会执行一次,比赛已经结束了,不会结束之后又结束吧。(别吐槽运动会闭幕式)
以上就是我对初学者的学习Activity生命周期的看法,希望能够帮到大家。