Android 四大组件之一(Activity详解)

老生常谈的一个话题,Activity,也可以说是 “活动” 。
Activity为Android四大组件之一,与用户打交道最为频繁的组件,承担着重要角色,是显示给用户看并可以与用户交互的作用,可见其重要性,这里做个关于Activity的生命周期的笔记,先上个生命周期表供参考。
Activity的生命周期

(一)各方法详解:

onCreate()
表示activity的创建 ,是必须实现的方法,此方法中必须调用setContentView(R.layout.xx)来定义用户界面布局。此方法会不可见不可交互,可做一些不耗时的数据,始终后接onStart()。


onStart()
表示activity的启动,此时已经处于显示状态,只是还没显示在前台,所以无法与用户进行交互。此方法可见,无焦点,不可交互;一般在这里进行动画的初始化;如果转入前台后接onResume(),如果转入隐藏状态后接onStop()。


onResume()
表示activity已在前台显示,可见可交互,始终后接onPause()。


onPause()
表示activity的暂停 ,可见不可交互;不能执行复杂的操作,否则会影响下一个Activity的启动速度;如果转入前台后接onResume(),如果转入对用户不可见状态后接onStop()。


onStop()
表示activity的停止 ,不可见不可交互;如果activity恢复与用户的交互后接onRestart(),如果activity被销毁后接onDestroy()。


onDestroy()
表示activity的销毁,不可见不可交互,系统会释放Activity所保存的资源,出栈或者系统内存不足所触发的强制销毁时才会调用;


onRestart()
在activity已停止并将重启的时候调用;初次创建时不会调用。


onSaveInstanceState()
用于存储Activity的状态信息,只有页面完全不可视时才会调用;


onRestoreInstanceState()
用于恢复Activity的状态信息;


(二)生命周期执行顺序例子:
1,A页面初次启动,其生命周期为:
A:onCreate()
A:onStart()
A:onResume()
2,硬件导致的生命周期变化:

2.1,在A页面按 后退键,其生命周期为(栈中仅存在A页面):

A:onPause()
A:onStop()
A:onDestroy()

2.2,在A页面按 菜单键 在调用此应用,其生命周期为(时间间隔短):

A:onPause()
A:onSaveInstanceState()  此步骤防止系统在后台自动杀死当前Activity,以便于恢复数据
A:onStop()

A:onResatrt()
A:onStart()
A:onResume()

2.3,在A页面按 菜单键 在调用此应用,其生命周期为(时间间隔长,系统已经在后台杀死当前A页面,那么就得调用onRestoreInstanceState()来恢复页面):

A:onPause()
A:onSaveInstanceState() 
A:onStop()

A:onResatrt()
A:onStart()
A:onRestoreInstanceState()
A:onResume()
3,页面切换时的生命周期变化(透明/非透明):

3.1 ,A页面 启动 非透明B页面,再返回到 A页面,其生命周期为:

A:onPause()      A切换到B
B:onCreate()
B:onStart()
B:onResume()
A:onSaveInstanceState()
A:onStop()                       

B:onPause()      B返回到A
A:onRestart()
A:onStart()
A:onResume()
B:onStop()
B:onDestroy()                    

3.2 ,A页面 启动 透明的B页面,再返回到A页面,其生命周期为:

A:onPause()      A切换到B
B:onCreate()
B:onStart()
B:onResume()                 

B:onPause()      B返回到A
A:onResume()
B:onStop()
B:onDestroy()                    
4,由系统原因导致的的生命周期变化:

4.1,旋转屏幕,其生命周期为:

A:onPause()    
A:onSaveInstanceState()
A:onStop()      
A:onDestroy()   
A:onCreate()
A:onStart()
A:onRestoreInstanceState()
A:onResume()                
(三)其他:

1,结束Activity:通过调用activity的finish()方法来结束Activity;
2,每次新建的Activity必须在AndroidManifest.xml文件中进行声明才能调用,如下;

<manifest ... >
  <application ... >
      <activity android:name=".ExampleActivity" />
      。。。
  </application ... >
</manifest >

3,Activity的透明主题样式设置:
– 颜色声明:

    <color name="colorTranslucent">#88888888</color>

– 主题样式如下:

    <style name="AppThemeTranslucent" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowNoTitle">true</item>
        <item name="android:colorBackgroundCacheHint">@null</item>
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowAnimationStyle">@android:style/Animation</item>
        <item name="android:windowBackground">@color/colorTranslucent</item>
    </style>

– 在AndroidManifest.xml中声明:

    <activity android:name=".BActivity"
         android:theme="@style/AppThemeTranslucent"/>

4,待。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值