[Android四大组件] Activity 详解

Activity 的生命周期详解

  • 首先直接上图,如下是生命周期图,俗话说看图易懂之。

    这里写图片描述

  • 管理Activity

    • Activity三种状态
      • 继续

        Activity位于前台,称作“运行中”。

      • 暂停

        另一个Activity置于前台,此Activity失去焦点(如果内存不够的话也会被销毁)。

      • 停止

        此Activity完全被遮盖,已停止的Activity也会处于活动状态(Activity保留在内存中,但是对用户是不可见的),随时都可能被销毁。

  • 实现生命周期回调

    • 我们自己写的Activity都是继承Activity的,同时还可以重写一些方法,例子如下:

      public class ExampleActivity extends Activity {
          @Override
          public void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              // Activity被初始化
          }
          @Override
          protected void onStart() {
              super.onStart();
              // Activity可见
          }
          @Override
          protected void onResume() {
              super.onResume();
              // Activity可见,并且可以与用户交互,onStart()却不能交互
          }
          @Override
          protected void onPause() {
              super.onPause();
              // Activity被遮盖
          }
          @Override
          protected void onStop() {
              super.onStop();
              // Activity长时间被遮盖(不可见),被置于后台,这里可以做一些资源释放的操作
          }
          @Override
          protected void onRestart(){
              super.onRestart();
              // Activity被遮盖之后,恢复到前台
          }
          @Override
          protected void onDestroy() {
              super.onDestroy();
              // Activity被销毁, 生命周期的最后一个方法, 一般在这里可以做最后的资源销毁操作
          }
      } 
      
    • 这里就是Activity的7个生命周期


  • 一些测试过来的知识

    • 如说待Activity启动到了onResume()方法的时候,我们按Home键回到桌面会发生什么方法调用呢?

      可以发现此时onPause方法和onStop方法被执行,也就是点击Home键回到主界面(Activity不可见)–>onPause()–>onStop()依次被调用 我们可以发现重新回到Activity时,调用了onRestart方法,onStart方法,onResume方法。因此, 当我们再次回到原Activity时–>onRestart()–>onStart()–>onResume()依次被调用


Activity启动模式

  • 相信大家都对Activity有些了解了,但是我们更应该了解它的启动模式,就只有4种,理解起来都很简单。

    • 四中模式

      • standard
      • singleTop
      • singleTask
      • singleInstance

        默认的模式为”standard”.

    • 我们将它们分为两类来讲吧

      • standard 和 singleTop

        Activity可多次实例化, 并且可以位于Activity堆栈中的任何位置

        • standard : 依次实例化压入Activity堆栈中

        • singleTop : 若Activity已在堆栈顶部, 则不会创建新的实例

      • singleTask 和 singleInstance

        只能启动任务,它们始终位于Activity堆栈的根位置

        • singleTask : 在同一个应用中,只有一个实例, 在其他Activity调用它时, 会将其之上的Activity都onDestroy()掉.并调用它的onNewIntent();

        • singleInstance : 只有一个实例, 并且独立运行在一个task中,这个task只有这个实例,不允许其他Activity存在(这里的task为新的任务栈)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值