最近去公司面试的时候我发现现在很多的面试官都会问Fragment和Activity的区别在哪里?本人根据自己的一些开发经验和自己面试的一些情况编写了这个博客,希望对面试者有所帮助,好了,直接切入主题。

我们来看看Fragment和Activity的区别?

我简单的来总结几点具体的和我们面试的时候要怎么来回答面试官。

  1. Fragment是到Android3.0+ 以后,Android新增了Fragments,在没有 Fragment 之前,一个屏幕只能放一个 Activity。这是一个起源时间大家要知道是什么时候开始引入的。
  2. .Activity 代表了一个屏幕的主体,而Fragment可以作为Activity的一个组成元素。
    一个Activity可以有若干个(0或n)Fragment构成。你可以把Fragment想象成Activity中的一个控件,只不过相对于一般控件,Fragment与Activity联系更为紧密,随着Activity的生命周期变化,Fragment也随之相应不同的生命周期函数。
    Fragment 从功能上讲相当于一个子活动(Activity),它可以让多个活动放到同一个屏幕上,也就是对用户界面和功能的重用,因为对于大屏设备来说,纯粹的 Activity 有些力不从心。
  3. Fragment 像是一个子活动,但是 Fragment 不是 Activity 的扩展,因为 Fragment 扩展自 android.app 中的 Object,而 Activity 是 Context 的子类。Fragment 有自己的视图层级结构,有自己的活动周期,还可以像活动一样响应后退按钮,Fragment 还有一个用作其初始化参数的包(Bundle),类似 Activity,Fragment 也可由系统自动保存并在以后还原。当系统还原 Fragment 时,它调用默认的构造函数(没有参数),然后将此Bundle还原到新创建的 Fragment 中,所以无论新建还是还原 Fragment,都要经过两个步骤:(1)调用默认构造函数(2)传入新的或者保存起来的Bundle。
  4. 一个Activity可以运行多个 Fragment,Fragment 切换时,由 FragmentTransaction 执行,切换时,上一个 Fragment 可以保存在后退栈中(Back Stack),这里的后退栈由 FragmentManager 来管理,注意 Fragment 和 Activity 的后退栈是有区别的:Activity 的后退栈由系统管理,而 Fragment 的后退栈由所在的Activity 管理。
  5. Fragment不能脱离Activity而存在,只有Activity才能作为接收intent的载体。其实两者基本上是载体和组成元素的关系。
  6. Fragment用来描述一些行为或一部分用户界面在一个Activity中,你可以合并多个fragment在一个单独的activity中建立多个UI面板,同时重用fragment在多个activity.你可以认为fragment作为一个activity中的一节模块fragment有自己的生命周期,接收自己的输入事件,你可以添加或移除从运行中的activity.一个fragment必须总是嵌入在一个activity中,同时fragment的生命周期受activity而影响,举个例子吧,当activity暂停,那么所有在这个activityfragments将被destroy释放。然而当一个activity在运行比如resume时,你可以单独的操控每个fragment,比如添加或删除。不过因为FragmentActivity的生命周期都比较复杂,我们分别对比下:创建一个fragment你必须创建一个Fragment的子类或存在的子类,比如类似下面的代码

public static classAndroidFragmentextendsFragment{
@Override
publicView onCreateView(LayoutInflaterinflater, ViewGroup container,
Bundle savedInstanceState) {
returninflater.inflate(R.layout.android_fragment,container,false);
}
}

Fragment类的一些代码看起来有些像Activity为了让大家了解清楚,Android开发网给大家整理下 Fragment的生命周期大家可以参考一下网上关于生命周期的介绍 http://www.cnblogs.com/purediy/p/3276545.html,部分类似Activity的,我们详细解释

onCreate()
当fragment创建时被调用,你应该初始化一些实用的组件,比如在fragment暂停或停止时需要恢复的

onCreateView()
当系统调用fragment在首次绘制用户界面时,如果画一个UI在你的fragment你必须返回一个View当然了你可以返回null代表这个fragment没有UI.

那么如何添加一个Fragment到Activity中呢? Activity的布局可以这样写

<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragmentandroid:name="com.android.cwj.ArticleListFragment"
android:id="@+id/list"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent"/>
<fragmentandroid:name="com.android.cwj.ArticleReaderFragment"
android:id="@+id/viewer"
android:layout_weight="2"
android:layout_width="0dp"
android:layout_height="match_parent"/>
</LinearLayout>


希望对大家有所帮助 谢谢! 有事可以加QQ详细了解 QQ:545614498

更多相关文章

  1. Android(安卓)用户界面---菜单(Menus 一)
  2. android用户界面编程技巧――如何使用Adapter
  3. Android:手把手带你了解实用的Android(安卓)Jetpack
  4. Android的服务(Service)(一)生命周期
  5. Android(安卓)Activity的生命周期详细介绍
  6. ionic监听android息屏和后台运行的生命周期
  7. Activity有几点你可能不知道的
  8. Android中Activity和task,活动亲和力,启动模式,活动状态以及生命周
  9. Android中Fragment嵌套生命周期响应问题

随机推荐

  1. 个人安卓学习笔记---Android模拟打电话程
  2. Android菜鸟日记13 触控
  3. Android 学习资料推荐
  4. Android(安卓)剪切板监听
  5. 005. Android frame animation
  6. ABS(actionbarsherlock)
  7. 基于android-async-http的文件上传
  8. Android TTS学习——TTS初体验(上)
  9. Android ADB通过WIFI无线调试
  10. android中notePad示例项目源码分析