fragment和activity的区别

Activity

生命周期

  • onCreate()
    表示 Activity 正在被创建,这是生命周期的第一个方法,一般在这个方法里做一些初始化的工作。
  • onRestart()
    表示 Activity 正在重新启动,从可见状态下变为不可见状态,这个方法会被调用,比如用户按 home 键切换到桌面,再切换回来,这个方法就会被调用。
  • onStart()
    回调这个方法的时候,Activity 已经可见,但是还和用户无法交互,这个方法和 onStop() 方法对应
  • onResume()
    回调这个方法的时候,Activity 已经可以和用户交互,这个方法和 onPause() 方法对应。
  • onPause()
    表示 Activity 正在停止,这个方法调用完毕之后,新的 Activity 的 onResume() 方法才会被调用。
  • onStop()
    表示 Activity 即将停止,同样不建议在这个方法里进行耗时的操作,这个方法和 onStart() 方法对应。
  • onDestory()
    表示 Activity 即将被销毁,这个方法里可以做一些资源回收和释放的操作,如解除绑定 Service,反注册 BroadCaseReceiver 等。

引起 Activity 重新创建的系统配置

android.content.res.Configuration 中的许多成员变量,都属于系统配置的 item, 比如屏幕方向,系统语言等。如果不想因为某项内容改变而引起 Activity 重新创建的话,可以在清单文件里指定。


Fragment

基本概念

Fragment,简称碎片,是Android 3.0(API 11)提出的,为了兼容低版本,support-v4库中也开发了一套Fragment API,最低兼容Android 1.6。

  • Fragment是依赖于Activity的,不能独立存在的。
  • 一个Activity里可以有多个Fragment。
  • 一个Fragment可以被多个Activity重用。
  • Fragment有自己的生命周期,并能接收输入事件。
  • 我们能在Activity运行时动态地添加或删除Fragment。

生命周期

Fragment的生命周期和Activity类似,但比Activity的生命周期复杂一些

  • onAttach():Fragment和Activity相关联时调用。可以通过该方法获取Activity引用,还可以通过getArguments()获取参数。
  • onCreate():Fragment被创建时调用。
  • onCreateView():创建Fragment的布局。
  • onActivityCreated():当Activity完成onCreate()时调用。
  • onStart():当Fragment可见时调用。
  • onResume():当Fragment可见且可交互时调用。
  • onPause():当Fragment不可交互但可见时调用。
  • onStop():当Fragment不可见时调用。
  • onDestroyView():当Fragment的UI从视图结构中移除时调用。
  • onDestroy():销毁Fragment时调用。
  • onDetach():当Fragment和Activity解除关联时调用。

区别

Activity 代表了一个屏幕的主体,而Fragment可以作为Activity的一个组成元素。
一个Activity可以有若干个(0或n)Fragment构成。你可以把Fragment想象成Activity中的一个控件,只不过相对于一般控件,Fragment与Activity联系更为紧密,随着Activity的生命周期变化,Fragment也随之相应不同的生命周期函数。
Fragment 从功能上讲相当于一个子活动(Activity),它可以让多个活动放到同一个屏幕上,也就是对用户界面和功能的重用,因为对于大屏设备来说,纯粹的 Activity 有些力不从心。
Fragment 像是一个子活动,但是 Fragment 不是 Activity 的扩展,因为 Fragment 扩展自 android.app 中的 Object,而 Activity 是 Context 的子类。
一个Activity可以运行多个 Fragment,Fragment不能脱离Activity而存在,只有Activity才能作为接收intent的载体。其实两者基本上是载体和组成元素的关系。

你可能感兴趣的:(fragment和activity的区别)