四大组件

Activity组件详解

2019-08-25  本文已影响0人  古拉啦啦

前言:今天开始我们学习安卓开发中的第一个组件,Activity,今天的内容如下:

1. 经查资料:

Activity是一个应用程序的组件,他在屏幕上提供了一个区域,允许用户在上面做一些交互性的操作, 比如打电话,照相,发送邮件,或者显示一个地图!Activity可以理解成一个绘制用户界面的窗口, 而这个窗口可以填满整个屏幕,也可能比屏幕小或者浮动在其他窗口的上方!

从上面这段话,我们可以得到以下信息:

1.Activity用于显示用户界面,用户通过Activity交互完成相关操作

  1. 一个App允许有多个Activity
  • 总结:Activity = 视图 = 所有能看见的东西

2.Activity的生命周期:

————————————————————————————————————
onCreate:创建(配置UI界面)
onStart: 开始(创建资源)
onResume: 继续(用户交互)
onReStart: 重新开始
onPause: 暂停 (保存数据,停止动画的播放)
On stop: 停止 (释放资源)
onDestory: 销毁

3. 生命周期该做的事

  • onCreate()
    声明UI元素,定义成员变量,配置UI等
    尽量少做些事,避免程序启动太久而看不见界面
    一旦onCreate() 操作完成,系统会迅速调用onStart() 与onResume()方法
  • onDestoty()
    需要将该activity彻底移除的信号时,系统会调用这个方法
    大多数app并不需要实现onDestory()这个方法,由于局部类references会随activity的销毁而销毁
    我们的activity应该在onPause(), onStop()中执行清除activity资源的操作
    如果含有onCreate()中创建的后台线程,或是其他有可能导致内存泄漏的的资源,应在onDestory()中清理资源
    在onCreate()中,直接调用finish()方法,系统会直接调用onDestory()方法,跳过其他的声明周期
    不要在 Activity#onDestroy()内执行释放资源的工作,例如一些工作线程的
    销毁和停止,因为 onDestroy()执行的时机可能较晚。可根据实际需要,在
    Activity#onPause()/onStop()中结合 isFinishing()的判断来执行。
  • onPause()
    停止动画或其他运行的的操作,那些都会导致cpu浪费
    提交用户离开时期保存的内容(例如邮箱草稿)
    释放系统资源,Camera,Broadcast Receiver,sensors(传感器,比如GPS) ,以及任何其他影响电量的资源
    不应该保存用户数据到永久存储上 (File或Db中)
    尽量减少onPause() 中的工作量避免切换到下一个activity变得缓慢
    当前Activity的onPause方法执行结束后才会执行下一个Activity的onCreate
    方法,所以在 onPause 方法中不适合做耗时较长的工作,这会影响到页面之间的跳
    转效率。
    在 Activity.onPause()或 Activity.onStop()回调中,关闭当前 activity 正在执
    行的的动画。
  • onResume()
    恢复activity时,应该初始化那些onPause() 释放掉的组件
    执行那些activity每次进入resume state 都需要进行初始化的动作
  • onStop()
    应该释放那些不再需要的所有资源,避免内存泄漏,onStop() 后系统会在需要内存空间时摧毁它的实例
    使用onStop()来执行那些CPU intensive的shut-down操作,例如往数据库写信息
    系统会保存布局中视图的当前状态,例如,可以保存EditText中的文本内容,停止通过Service定时更新UI上的数据的Service
  • onStart()
    在onStop()中里面做了那些清除的操作,就应该做instant中把那些清除掉的资源重新创建出来

4 .活动状态

1.运行状态
2.暂停状态(Resume)
3.停止状态(Restart->Start->Reaume)
4.销毁状态

5 活动生存期

1.完整生存期 onCreate===onDestory
2.可见生存期 onStart===onStop
3.前台生存期 onResume===onPause

6. 解释

1.Android用Activity Stack来管理多个Activity,所以呢,同一时刻只会有最顶上的那个Activity是处于active或者running状态。其它的Activity都被压在下面了。

  1. 如果非活动的Activity仍是可见的(即如果上面压着的是一个非全屏的Activity或透明的Activity),它是处于paused状态的。在系统内存不足的情况下,paused状态的Activity是有可被系统杀掉的。只是不明白,如果它被干掉了,界面上的显示又会变成什么模样?看来下回有必要研究一下这种情况了。

3.几个事件的配对可以比较清楚地理解它们的关系。Create与Destroy配成一对,叫entrie lifetime,在创建时分配资源,则在销毁时释放资源;往上一点还有Start与Stop一对,叫visible lifetime,表达的是可见与非可见这么一个过程;最顶上的就是Resume和Pause这一对了,叫foreground lifetime,表达的了是否处于激活状态的过程。

4.因此,我们实现的Activity派生类,要重载两个重要的方法:onCreate()进行初始化操作,onPause()保存当前操作的结果

7.执行阶段

1.启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态。

2.当前Activity被其他Activity覆盖其上或被锁屏:系统会调用onPause方法,暂停当前Activity的执行。

3.当前Activity由被覆盖状态回到前台或解锁屏:系统会调用onResume方法,再次进入运行状态。

4.当前Activity转到新的Activity界面或按Home键回到主屏,自身退居后台:系统会先调用onPause方法,然后调用onStop方法,进入停滞状态。

5.用户后退回到此Activity:系统会先调用onRestart方法,然后调用onStart方法,最后调用onResume方法,再次进入运行状态。

6.当前Activity处于被覆盖状态或者后台不可见状态,即第2步和第4步,系统内存不足,杀死当前Activity,而后用户退回当前Activity:再次调用onCreate方法、onStart方法、onResume方法,进入运行状态。

7.用户退出当前Activity:系统先调用onPause方法,然后调用onStop方法,最后调用onDestory方法,结束当前Activity。

执行阶段的图解:


8.Activity的使用流程:

我相信才进入安卓,很多人还不适应,不要心燥,慢慢来,坚持就是胜利。

上一篇下一篇

猜你喜欢

热点阅读