fragment 的介绍
可以把Fragment想成Activity中的模块,这个模块有自己的布局,有自己的生命周期,单独处理自己的输入,在Activity运行的时候可以加载或者移除Fragment模块。
可以把Fragment设计成可以在多个Activity中复用的模块。
当开发的应用程序同时适用于平板电脑和手机时,可以利用Fragment实现灵活的布局,改善用户体验。
fragment和activity
因为Fragment必须嵌入在Acitivity中使用,所以Fragment的生命周期和它所在的Activity是密切相关的。
如果Activity是暂停状态,其中所有的Fragment都是暂停状态;如果Activity是stopped状态,这个Activity中所有的Fragment都不能被启动;如果Activity被销毁,那么它其中的所有Fragment都会被销毁。
我们不讲fragment的原理知识,生命周期,我们说说它自己的方式
首先,很重要的一点,fragment是依靠activity的存在的,就好比fragment是activity的寄生虫,那么当activity 生命开始oncreate() 的时候,这时候fragment就开始 oncreateView(), 请注意,这里是所有的依靠在这个activity 上的fragment 都会执行自己的oncreateView() , 而activity start()的时候,所以的fragment 都要执行start(), 虽然 这个时候 有些 fragment 还没有出现,但是 都执行啦相应的方法,那么就会出现这么一个问题
fragment依靠的activity启动的时候 会不会变慢,数据请求该写在哪里
重点:*********************************
activity 启动的时候,虽然做啦很多工作,但是速度并没有慢多少,因为他们会在一个时间点,各自做各自的工作,所以速度上并没有影响多少,但是如果你把网络请求写在onstart()方法中 ,那么它要你比你想象的执行的早,一般不建议写在oncreateView()中,无论写在哪里 都要注意一个问题,就是当依靠的这个activity onpause时, 所有的fragment 都会onpause, 但是 依靠的这个activity 重新onresume(), 所有的fragment 都会去 onstart---onresume, 这个时候 你一定要注意,要避免重复的网络请求,以及重复添加view
***********************************************
关于fragment.getAcivity(),我再 说几句, 无论是几层 fragment 每一个都可以得到activity ,这样fragment 才有能力完成一些操作,
在fragment中 得到资源文件 Fragment.this.getActivity().getResources().getDrawble(); 等等