最近去公司面试的时候我发现现在很多的面试官都会问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 class AndroidFragment extends Fragment{
        @Override
        public View onCreateView(LayoutInflaterinflater, ViewGroup container,
                             Bundle savedInstanceState) { 
               return inflater.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的布局可以这样写

<?xml version="1.0"encoding="utf-8"?>
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
               android:id="@+id/list"
           android:layout_weight="1"
           android:layout_width="0dp"
           android:layout_height="match_parent" />
                android:id="@+id/viewer"
           android:layout_weight="2"
           android:layout_width="0dp"
           android:layout_height="match_parent" />


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

 

更多相关文章

  1. Android静态变量的生命周期 简单介绍
  2. Android的生命周期图
  3. Android UI用户界面开发辅助工具(值得一试)
  4. Android用户界面 UI组件--TextView及其子类(二) Button,selector
  5. Android:Activity的生命周期

随机推荐

  1. ava(Android)线程池
  2. Android四大组件【摘抄】
  3. Android官方技术文档翻译——IntelliJ 项
  4. 从零开始学android:Android事件处理—单
  5. mac下android真机调试,连接不上设备的解
  6. android开发之方形圆角listview
  7. Android(安卓)自定义xmlns
  8. Android--移植android ndk c++各种兼容性
  9. 使用android源码编译并烧LG nexus4
  10. Android(安卓)Studio初体验