精华内容
下载资源
问答
  • 安卓Fragment生命周期

    2020-01-15 17:58:27
    Fragment生命周期与Activity相似 Fragment必须依赖于Activity才能运行,所以Activity生命周期调用优先于Fragment,并且Fragment比Activity要轻量很多。 onAttach:Fragment与Activity的建立关联时调用,用于获得...

    Fragment生命周期与Activity相似

    Fragment必须依赖于Activity才能运行,所以Activity生命周期调用优先于Fragment,并且Fragment比Activity要轻量很多。

    1. onAttach:Fragment与Activity的建立关联时调用,用于获得Activity传递的值
    2. onCreate:视图创建之前调用
    3. onCreateView:创建Fragment视图时调用
    4. onActivityCreated:视图创建完成之后调用
    5. onStart:界面视图显示状态下调用
    6. onResume:界面视图有焦点的状态下调用
    7. onDestroyView:在Fragment视图被移除时调用
    8. onDestroy : 销毁时调用
    9. onDetach : 当Fragment不再依附于Activity时调用

    Fragment启动流程

    Fragment创建时调用:
    onAttach——>onCreate——>onCreateView——>onActivityCreated——>onStart——>onResume

    Fragment不可见时调用:
    onPause——>onStop

    Fragment销毁时调用:
    onPause——>onStop——>onDestroyView——>onDestory——>onDetach

    流程图

    在这里插入图片描述

    开发过程中需要注意,可能会常用到的方法

    setUserVisibleHint() 该方法是在onCreateView之前调用,所以该方法不能操作视图。不然回报空指针错误

    使用场景:当与ViewPager使用时内部有个提前缓存的机制(默认是提前缓存一页),可以通过该方法做懒加载的处理。因为ViewPager的机制,初始化的过程中会加载前与后两个Fragment,用户还未手动触发第二页时就已经加载了后一个Fragment并进行网络请求渲染数据,完全违背了懒加载机制。所以需要使用该方法,当此Fragment可见时则进行网络请求并实现数据渲染刷新界面。

    注意事项:在未使用ViewPager,而是自己通过FragmentTransaction 对Fragment进行add hide show操作,setUserVisibleHint()方法没有被调用。原因是hide()和show()方法调用时Fragment不走任何的生命周期。

       @Override
        public void setUserVisibleHint(boolean isVisibleToUser) {
            super.setUserVisibleHint(isVisibleToUser);
            if (isVisibleToUser) {
                //界面可见
            } else {
                //界面不可见
            }
        }
    

    onHiddenChanged() 用FragmentTransaction来控制fragment的hide和show时,那么这个方法就会被调用。每当你对某个Fragment使用hide或者是show的时候,那么这个Fragment就会自动调用这个方法。
    (使用情况:你自己去管理Fragment,而不是用viewpager管理的时候)

    展开全文
  • Fragment为Activity界面的一个组成部分,Activity可以由多个不同的Fragment组成,Fragment可以由自己的生命周期与接收、处理用户事件,这样就不必为Activity写一堆控件代码了,Fragment可以动态的添加、移除、替换...

    部分摘自http://blog.csdn.net/lmj623565791/article/details/37970961/

    安卓Fragment与生命周期

    Fragment简介

        Fragment意为片段,顾名思义就是可以作为Activity的一部分。

        针对各式各样的屏幕尺寸,Fragment可以灵活的布局,让用户有更好的体验。

        Fragment为Activity界面的一个组成部分,Activity可以由多个不同的Fragment组成,Fragment可以由自己的生命周期与接收、处理用户事件,这样就不必为Activity写一堆控件代码了,Fragment可以动态的添加、移除、替换。

        

    Fragment的使用

        实现像手机QQ那样的布局。

        Fragment可以像手机QQ那样实现联系人、消息、动态的三个板块互相转换。

        先在主Activity中写一个Fragment,然后写三个按钮,在写3个Fragment的XML文件,把Fragment板块依附到主Activity的Fragment板块上面就可以了。

        

    主Activity

        <FrameLayout
            android:layout_weight="1"
            android:id="@+id/flconten"
            android:background="#fff"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
        </FrameLayout>
        <LinearLayout
            android:layout_height="wrap_content"
            android:layout_width="match_parent"
            android:orientation="horizontal"
            >
            <Button
                android:id="@+id/btn1"
                android:layout_weight="1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="消息"
                />
            <Button
                android:id="@+id/btn2"
                android:layout_weight="1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="联系人"
                />
            <Button
                android:id="@+id/btn3"
                android:layout_weight="1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="动态"
                />
        </LinearLayout>

        

    消息XML文件

    	<TextView
    	    android:layout_width="wrap_content"
    	    android:layout_height="wrap_content"
    	    android:text="消息"
    	    android:textSize="30dp"
    	    />

    联系人XML文件跟消息一样,动态无XML文件,使用Java代码代替。

        

        在Java代码中MainActivity,初始化时获取Fragment管理者的支持,开启新事务,添加一个Fragment片段。

        

    		fm = getSupportFragmentManager();
    		transaction = fm.beginTransaction();
    		transaction.add(R.id.flconten, msgFragment);
    		transaction.commit();

    	private FragmentTransaction transaction;
    
    	private FragmentManager fm;

    运行后效果是这样


        

    按钮的监听

    开启新事务,然后替换掉旧的Fragment

    	public void onClick(View v) {
    		int id = v.getId();
    		switch (id) {
    		case R.id.btn1:
    			transaction = fm.beginTransaction();
    			transaction = transaction.replace(R.id.flconten, msgFragment);
    			transaction.commit();
    			break;
    		case R.id.btn2:
    			transaction = fm.beginTransaction();
    			transaction.replace(R.id.flconten, contactFragment);
    			transaction.commit();
    			break;
    		case R.id.btn3:
    			transaction = fm.beginTransaction();
    			transaction.replace(R.id.flconten, doFragment);
    			transaction.commit();
    			break;
    		default:
    			break;
    		}
    	}

        

    消息与联系人的Fragment关联到了XML文件

    public class MsgFragment extends Fragment {
    	@Override
    	public View onCreateView(LayoutInflater inflater, ViewGroup container,
    			Bundle savedInstanceState) {
    		// 打气筒动态去关联一个布局文件
    		View inflate = inflater.inflate(R.layout.msg_fragment, null);
    		return inflate;
    	}
    
    }

    动态的Fragment没关联到XML文件,用代码自动生成Fragment

        

    public class DoFragment extends Fragment {
    	@Override
    	public View onCreateView(LayoutInflater inflater, ViewGroup container,
    			Bundle savedInstanceState) {
    		TextView textView = new TextView(getActivity());
    		textView.setText("动态");
    		textView.setTextSize(30);
    		return textView;
    	}
    }

    最终效果图


        

    Fragment的生命周期

        


        

    把所有的方法都写上到ContactFragment,一一测试,然后输出的顺序


        

        Fragment必须是依附到Activity上的,所以Activity的生命周期会直接影响到Fragment的生命周期。

        若Activity是暂停状态,所有的Fragment都是暂停状态,若Activity是Stop状态,所有的Fragment都不能被启动,若Activity被销毁,那么所有的Fragment都会被销毁。

        当Fragment进行转换操作,把Fragment放到Activity中的back stack中,用户就可以进行返回操作了。

        

    onAttach(Activity)
    当Fragment与Activity发生关联时调用。
    onCreateView(LayoutInflater, ViewGroup,Bundle)
    创建该Fragment的视图
    onActivityCreated(Bundle)
    当Activity的onCreate方法返回时调用
    onDestoryView()
    与onCreateView想对应,当该Fragment的视图被移除时调用
    onDetach()
    与onAttach相对应,当Fragment与Activity关联被取消时调用
    注意:除了onCreateView,其他的所有方法如果你重写了,必须调用父类对于该方法的实现,



    展开全文
  • 活动: 创建-》启动-》获得焦点-》暂停-》停止-》销毁 碎片: 附加-》创建-》创建视图-》 活动创建-》启动-》获取焦点-》暂停-》停止-》销毁视图-》销毁-》分离 attach 附加的意思 detach 分离 的意思。...

     韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha

    活动:  创建-》启动-》获得焦点-》暂停-》停止-》销毁

    碎片: 附加-》创建-》创建视图-》 活动创建-》启动-》获取焦点-》暂停-》停止-》销毁视图-》销毁-》分离

     

    attach  附加的意思

    detach  分离 的意思。

     

    转载于:https://www.cnblogs.com/yue31313/p/7382055.html

    展开全文
  • fragment和tab的流程不太清楚 以至于MainActivity中的frag实例化后,再多线程调用时内部变量总是为null,记录下生命周期流程 其中FragmentVideoCall继承自fragmentMainActivity-&gt;onCreateTabListener-&...

    对fragment和tab的流程不太清楚 以至于MainActivity中的frag实例化后,再多线程调用时内部变量总是为null,记录下生命周期流程  备忘 其中FragmentVideoCall继承自fragment

    MainActivity->onCreate    

     
    actionbar和TabListener在此 add

    TabListener->onTabSelected  

    fragment在此实例化 

    FragmentVideoCall->onCreateView
    FragmentVideoCall->onActivityCreated

    FragmentVideoCall->onStart

    此三步中初始化frag中各种变量

    MainActivity->onResume  

    frag在此从TabListener中获取实例

    展开全文
  • Fragment生命周期: 1、与Activity 不同:多了几个方法 只是有几个Activity中没有的新方法,这里需要重点介绍一下: onAttach方法:Fragment和Activity建立关联的时候调用。onCreateView方法:为Fragment加载布局...
  • Android Activity和Fragment生命周期

    千次阅读 2017-07-20 23:46:12
    写在前边: 感觉要暂时放弃自己钟爱的computer graphics转战安卓开发了,心里还是...在Android中,activity和fragment生命周期一直很繁琐,有时候也是傻傻分不清楚,先贴两张图,分别对应activity和fragment的生命周
  • 我们先套用安卓官网给的一张Activity对应Fragment生命周期图: 上面的图说明了Fragment跟Activity之间的关系。这张图的前提条件是什么呢?在什么情况下成立呢?对于我们新手来说,需要说明一下这个问题。 1、 ...
  • 综述    很多时候我们的任务需要绑定生命周期,比如加载网络图片、播放动画等等,我们需要跟Activity或者Fragment生命周期进行绑定,让Activity或者Fragment生命周期管理机制自动管理我们的任务。...
  • 转载自... 1-Activity生命周期 2-Fragment生命周期 3-Service生命周期 4-View的绘制流程图 5-Looper-Message-Handler流程图 6-MediaPlayer生命周期 7-SurfaceView生命周期 ...
  • 安卓fragment

    2018-05-07 17:52:51
    生命周期方法跟Activity一致,可以理解把其为就是一个Activity 定义布局文件作为Fragment的显示内容 使用Fragment: layout下创建fragment1.xml 创建类Fragment1,继承FragmentFragment显示至指定ViewGrou...
  • 安卓Fragment

    2018-01-16 15:22:37
    Fragment是在Android 3.0...Fragment作为Activty的它的生命周期受Activity的影响。 1.Fragment的创建 ①静态创建 (xml文件中创建) 1.通过id/tag找到Fragment 2.class继承Fragment 3.关联Fragment xml代码
  • 安卓 Fragment 学习

    2020-04-17 14:32:12
    本文不详细讲Fragment原理,只用来...Fragment比Activity较轻量级,也可以提供与用户交互的界面并且有自己的生命周期,它必须嵌套在Activity中使用。 Fragment是依赖于Activity的,不能独立存在的. 一个Activity里...
  • 附Java/C/C++/机器学习/算法与数据结构/前端/安卓/Python/程序员必读书籍书单大全: 书单导航页(点击右侧 极客侠栈 即可打开个人博客):极客侠栈 ①【Java】学习之路吐血整理技术书从入门到进阶最全50+本(珍藏版...
  • wb安卓Fragment

    2020-11-18 16:50:58
    Fragment Fragment是一种可以嵌入在活动中...Fragment不能够单独使用,需要嵌套在Activity中使用,其生命周期也受到宿主Activity的生命周期的影响。 Fragment的定义 Fragment依赖于Activity,不能独立存在 一个Acti
  • 引言对于安卓生命周期的过程以及相应的事件的了解是非常重要的。活动(Activity)的生命周期Activity 类中定义了七个事件回调方法,与Activity生命周期的每一个环节对应。 1. onCreate() 这个方法你已经看到过很...
  • Activity与Fragment生命周期详解

    千次阅读 2016-03-21 18:44:49
    安卓中Activity与Fragment是非常相似的两个类,它们各自都拥有自己的生命周期,且都可以用来显示布局文件中的视图。其中Activity是通过setContenView()显示视图,而Fragment是通过在onCreateView()中将布局xml文件...
  • 安卓Fragment介绍

    2014-04-27 22:44:09
    Fragment要点 Fragment作为Activity界面的一部分...在Activity运行过程中,可以添加、移除或者替换Fragment(add()、remove()、replace())Fragment可以响应自己的输入事件,并且有自己的生命周期,当然,它们的
  • Activity和Fragment安卓开发中用的最多的两个组件,所以我们需要对它们的生命周期有一个很清晰的认识。目前很多工作好多年的开发对一些细节不是很清楚,经常会导致一些bug的产生,在下面我会对生命周期做一些详细...
  • 准备重新入手安卓了,依然选择从fragment开始。冲鸭~! Fragment有如下两个选择 android.support.v4.app.Fragment android.app.Fragment; support.v4.app下的片段具有更好的兼容性,可以兼容到1.6版本,而app下...
  • 一, Fragment是什么?  >Android 3.0以后出现的 Api11 以上 Activity的组成部分  Fragment(小的Activity)  Fragment可以显示 UI内容 可以和用户进行交互 ... Fragment 有自己的生命周期 可以接受
  • Fragments的生命周期 每一个fragments 都有自己的一套生命周期回调方法和处理自己的用户输入事件。 对应生命周期可参考下图: 创建片元(Creating a Fragment)To create a fragment, you must create a ...
  • 一、Fragment要点Fragment作为Activity界面的一部分组成出现 可以在一个Activity中同时出现多个Fragment,并且,一个Fragment亦可在多个Activity...Fragment可以响应自己的输入事件,并且有自己的生命周期,当然,它们
  • 安卓重要的生命周期图和流程图

    千次阅读 2016-05-24 10:04:25
    原文地址:... 1、Activity生命周期 ...2、Fragment生命周期 3、Service生命周期 4、View的绘制流程图 5、Looper-Message-Handler流程图 6、M
  • Iwfu-安卓重要的生命周期图和流程图

    千次阅读 2016-05-24 01:18:29
    1-Activity生命周期2-Fragment生命周期3-Service生命周期4-View的绘制流程图5-Looper-Message-Handler流程图6-MediaPlayer生命周期7-SurfaceView生命周期8-Activity状态保存恢复流程图:9-IBinder在Android系统使用...
  • 否则就由可能会导致内存泄漏甚至崩溃官方实现的Lifecycle 是一个持有组件(比如 activity 或者 fragment生命周期状态信息的类,并且允许其它对象观察这个状态。主要使用两个枚举来跟踪相关组件...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 153
精华内容 61
关键字:

安卓fragment生命周期