生命周期

Application 生命周期

onCreate 在创建应用程序时创建
onTerminate 当终止应用程序对象时调用,不保证一定被调用,当程序是被内核终止以便为其他应用程序释放资源,那么将不会提醒,并且不调用应用程序的对象的onTerminate方法而直接终止进 程
onLowMemory 当后台程序已经终止资源还匮乏时会调用这个方法。好的应用程序一般会在这个方法里面释放一些不必要的资源来应付当后台程序已经终止,前台应用程序内存还不够时的情况。
onConfigurationChanged 配置改变时触发这个方法

Activity的生命周期

这里写图片描述
Activity的四种状态
- 运行状态Running:Activity位于栈顶,处于屏幕最前方
- 暂停状态Pause:Activity失去了焦点但仍然对用于可见
- 停止状态Stop:Activity对用户不可见
- 销毁状态Destroy:人为或系统原因(如低内存等)被销毁

onCreate时界面尚不可见,onStart后界面可见,onResume后界面接收事件

案例:

  1. Activity A 跳到 Activity B:A:onPause -> B:onCreate -> B:onStart -> B:onResume -> A:onStop
  2. Activity B 点击返回键回到 Activity A:B:onPause -> A:onRestart -> A:onStart -> A:onResume -> B:onStop -> B:onDestroy
  3. 只有Activity A时点击返回键回到桌面:A:onPause -> A:onStop -> A:onDestroy
  4. 只有Activity A时点击Home键回到桌面:A:onPause -> A:onStop
  5. Activity A异常退出:A onPause == A onSaveInstance -> A onStop -> A onDestroy -> A onCreate -> onStart -> A onRestoreInstance -> A onResume
  6. Activity A 跳动小窗口Activity B(A部分被遮住):A:onPause -> B:onCreate -> B:onStart -> B:onResume

Fragment 生命周期

这里写图片描述

//系统在向 Activity 添加片段时调用的方法,附加之后才能够通过getActivity()获取Activity的上下文。
public void onAttach(Context context)
public void onCreate(Bundle savedInstanceState)
//返回Fragment的布局
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState)
// 在 Activity 的 onCreate() 方法已返回时调用。
public void onActivityCreated(@Nullable Bundle savedInstanceState)
//在Activity的onStart之后调用
public void onStart()
//在Activity的onResume之后调用
public void onResume()
//在Activity的onPause之前调用
public void onPause() 
//在Activity的onStop之前调用
public void onStop()
// 在移除与片段关联的视图层次结构时调用。
public void onDestroyView()
// 在Activity的onDestroy之前调用
public void onDestroy()
// 在取消片段与 Activity 的关联时调用。
public void onDetach()

案例
1、replace,FragmentA替换为FragmentB,在创建完B以后会先销毁A,再创建B的视图
FragmentB: onAttach
FragmentB: onCreate
FragmentA: onPause
FragmentA: onStop
FragmentA: onDestroyView
FragmentA: onDestroy
FragmentA: onDetach
FragmentB: onCreateView
FragmentB: onActivityCreated
FragmentB: onStart
FragmentB: onResume
2、 add,添加FragmentA
FragmentA: onAttach
FragmentA: onCreate
FragmentA: onCreateView
FragmentA: onActivityCreated
FragmentA: onStart
FragmentA: onResume
3、remove,移除FragmentA
FragmentA: onPause
FragmentA: onStop
FragmentA: onDestroyView
FragmentA: onDestroy
FragmentA: onDetach
4、attach,从detach到attach状态
FragmentA: onCreateView
FragmentA: onActivityCreated
FragmentA: onStart
FragmentA: onResume
5、detach,从attach到detach状态
FragmentA: onPause
FragmentA: onStop
FragmentA: onDestroyView
6、hide和show不会触发生命周期回调

View 生命周期

Creation(创建)
Constructors(构造函数):有一种形式的构造函数会在View在代码中被创建时调用,另一种形式的构造函数会在View从layout加载出来时被调用。
第二种形式的构造函数会解析和应用layout文件中定义的任何属性。
onFinishInflate():该方法当View及其子View从XML文件中加载完成后会被调用。

Layout(布局)
onMeasure(int, int):该方法在计算当前View及其所有子View尺寸大小需求时会被调用。
onLayout(boolean, int, int, int, int):该方法在当前View需要为其子View分配尺寸和位置时会被调用。
onSizeChanged(int, int, int, int):该方法在当前View尺寸变化时被调用。

Drawing(绘制)
onDraw(android.graphics.Canvas):该方法在当前View需要呈现其内容时被调用。

Event processing(事件处理)
onKeyDown(int, KeyEvent):该方法在一个物理按键事件发生时被调用。
onKeyUp(int, KeyEvent):该方法在一个物理按键弹起事件发生时被调用。
onTrackballEvent(MotionEvent):该方法在一个轨迹球运动事件发生时被调用。
onTouchEvent(MotionEvent):该方法在一个触摸屏幕运动事件发生时被调用。

Focus(聚焦)
onFocusChanged(boolean, int, android.graphics.Rect):该方法在当前View获得或失去焦点时被调用。
onWindowFocusChanged(boolean):该方法在包含当前View的window获得或失去焦点时被调用。

Attaching(附上)
onAttachedToWindow():该方法在当前View被附到一个window上时被调用。
onDetachedFromWindow():该方法在当前View从一个window上分离时被调用。
onVisibilityChanged(View, int):该方法在当前View或其祖先的可见性改变时被调用。
onWindowVisibilityChanged(int):该方法在包含当前View的window可见性改变时被调用。

Service 生命周期

这里写图片描述

4个手动调用的方法

手动调用方法 作用
startService() 启动服务
stopService() 关闭服务
bindService() 绑定服务
unbindService() 解绑服务

5个自动调用的方法

内部自动调用的方法 作用
onCreat() 创建服务
onStartCommand() 开始服务
onDestroy() 销毁服务
onBind() 绑定服务
onUnbind() 解绑服务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值