Android四大组件生命周期

四大组件的生命周期
    介绍生命周期之前,先了解下任务的概念
任务就是Activity的栈,它由一个或多个Activity组成的共同完成” 应用程序” .栈底的是启动整个任务的Activity,栈顶的是当前运行的用户可以交互的Activity,当一个activity 启动另外一个的时候,新的activity 就被压入栈,并成为当前运行的activity。而前一个activity 仍保持在栈之中。当用户按下BACK 键的时候,当前activity 出栈,而前一个恢复为当前运行的activity。栈中保存的其实是对象,栈中的Activity 永远不会重排,只会压入或弹出,所以如果发生了诸如需要多个地图浏览器的情况,就会使得一个任务中出现多个同一Activity 子类的实例同时存在。

任务中的所有activity 是作为一个整体进行移动的。整个的任务(即activity 栈)可以移到前台,或退至后台。


Android系统是一个多任务(Multi-Task)的操作系统,可以在用手机听音乐的同时,也执行其他多个程序。每多执行一个应用程序,就会多耗费一些系统内存,当同时执行的程序过多,或是关闭的程序没有正确释放掉内存,系统就会觉得越来越慢,甚至不稳定。
为了解决这个问题, Android 引入了一个新的机制-- 生命周期(Life Cycle)。

Activity生命周期:


Activity整个生命周期的4种状态、7个重要方法和3个嵌套循环

四种状态
1      活动(Active/Running)状态
当Activity运行在屏幕前台获取了焦点能响应用户的操作,属于运行状态
2     暂停(Paused)状态
当Activity失去焦点但仍对用户可见(如在它之上有另一个透明的Activity或Toast、AlertDialog等弹出窗口时)它处于暂停状态。暂停的Activity仍然是存活状态(它保留着所有的状态和成员信息并保持和窗口管理器的连接),但是当系统内存极小时可以被系统杀掉
3.      停止(Stopped)状态
完全被另一个Activity遮挡时处于停止状态,它仍然保留着所有的状态和成员信息。只是对用户不可见,当其他地方需要内存时它往往被系统杀掉
4.      非活动(Dead)状态
Activity 尚未被启动、已经被手动终止,或已经被系统回收时处于非活动的状态,要手动终止Activity,可以在程序中调用"finish"方法。
      onCreate(Bundle savedInstanceState);
当Activity可见未获得用户焦点不能交互时系统会调用
      onStart();
当Activity已经停止然后重新被启动时系统会调用
      onRestart();
当Activity可见且获得用户焦点能交互时系统会调用
      onResume();
当系统启动另外一个新的Activity时,在新Activity启动之前被系统调用保存现有的Activity中的持久数据、停止动画等,这个实现方法必须非常快。
      onPause();
当Activity被新的Activity完全覆盖不可见时被系统调用
      onStop();
当Activity(用户调用finish()或系统由于内存不足)被系统销毁杀掉时系统调用,(整个生命周期只调用1次)用来释放onCreate ()方法中创建的资源,如结束线程等
      onDestroy();
三个嵌套循环
             1.Activity完整的生命周期:从第一次调用onCreate()开始直到调用onDestroy()结束
             2.Activity的可视生命周期:从调用onStart()到相应的调用onStop()
                  在这两个方法之间,可以保持显示Activity所需要的资源。如在onStart()中注册一个广播接收者监听影响你的UI的改变,在onStop() 中注销。
             3.Activity的前台生命周期:从调用onResume()到相应的调用onPause()。
Service生命周期:

Service有两种使用方法:
1>以调用Context.startService()启动,而以调用Context.stopService()结束
2>以调用Context.bindService()方法建立,以调用Context.unbindService()关闭
service重要的生命周期方法:
当用户调用startService ()或bindService()时,Service第一次被实例化的时候系统会调用,整个生命周期只调用1次这个方法,通常用于初始化设置。注意:多次调用startService()或bindService()方法不会多次触发onCreate()方法
当用户调用stopService()或unbindService()来停止服务时被系统调用,(整个生命周期只调用1次)用来释
void onDestroy()
通过startService()方法启动的服务
      初始化结束后系统会调用该方法,用于处理传递给startService()的Intent对象。如音乐服务会打开Intent 来探明将要播放哪首音乐,并开始播放。注意:多次调用startService()方法会多次触发onStart()方法
void onStart(Intent intent)
通过bindService ()方法启动的服务
  初始化结束后系统会调用该方法,用来绑定传递给bindService 的Intent 的对象。注意:多次调用bindService()时,如果该服务已启动则不会再触发此方法
IBinder onBind(Intent intent)
用户调用unbindService()时系统调用此方法,Intent 对象同样传递给该方法
boolean onUnbind(Intent intent)
如果有新的客户端连接至该服务,只有当旧的调用onUnbind()后,新的才会调用该方法
void onRebind(Intent intent)
补充:onCreate(Bundle savedInstanceState)与onS

BroadcastReceive广播接收器生命周期:
生命周期只有十秒左右,如果在 onReceive() 内做超过十秒内的事情,就会报ANR(Application No Response) 程序无响应的错误信息
它的生命周期为从回调onReceive()方法开始到该方法返回结果后结束


             

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
Android 四大组件分别是活动(Activity)、服务(Service)、广播接收器(BroadcastReceiver)和内容提供器(ContentProvider)。 活动(Activity)是Android应用的核心组件,它代表用户界面的一个单独屏幕。每个活动都有自己的生命周期。活动的生命周期包括以下几个方法:onCreate()、onStart()、onResume()、onPause()、onStop()、onDestroy()。当活动被创建时,首先调用onCreate()方法,然后调用onStart()和onResume()方法,活动进入可见状态。当活动被其他活动覆盖或者用户按下返回键时,会调用onPause()方法,然后调用onStop()方法,活动进入不可见状态。当用户再次返回到该活动时,会调用onRestart()、onStart()和onResume()方法,恢复活动的可见状态。最后,当活动被销毁时,会调用onPause()、onStop()和onDestroy()方法。 服务(Service)是一种在后台运行的组件,它可以执行长时间运行的任务,即使用户切换到其他应用程序。服务的生命周期包括onCreate()、onStartCommand()、onBind()和onDestroy()方法。当服务被创建时,会调用onCreate()方法。然后,通过调用onStartCommand()方法来启动服务并执行后台任务。如果其他组件想要与服务进行交互,可以调用onBind()方法来绑定服务。最后,当服务不再需要时,会调用onDestroy()方法来销毁服务。 广播接收器(BroadcastReceiver)是一种响应系统广播消息的组件。它可以在应用程序之间传递消息,或者通过系统消息通知应用程序发生的事件。广播接收器的生命周期只包括onReceive()方法,当接收到广播消息时,会调用这个方法来处理接收到的消息。 内容提供器(ContentProvider)是一种管理应用程序之间共享数据的组件。它允许应用程序共享数据,并提供对数据的访问和修改。内容提供器的生命周期包括onCreate()、query()、insert()、update()和delete()等方法。当内容提供器被创建时,会调用onCreate()方法。然后,通过调用query()、insert()、update()和delete()方法来执行对数据的操作。最后,当内容提供器不再需要时,会调用onDestroy()方法来销毁内容提供器。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值