重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

androidfragment,android fragment和activity的区别

android fragment有什么用

自从Android 3.0中引入fragments 的概念,其目的是为了解决不同屏幕分辩率的动态和灵活UI设计。大屏幕如平板小屏幕如手机,平板电脑的设计使得其有更多的空间来放更多的UI组件,而多出来的空间存放UI使其会产生更多的交互,从而诞生了fragments 。

利州ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:13518219792(备注:SSL证书合作)期待与您的合作!

fragments 的设计不需要你来亲自管理view hierarchy 的复杂变化,通过将Activity 的布局分散到frament 中,可以在运行时修改activity 的外观,并且由activity 管理的back stack 中保存些变化。当一个片段指定了自身的布局时,它能和其他片段配置成不同的组合,在活动中为不同的屏幕尺寸修改布局配置(小屏幕可能每次显示一个片段,而大屏幕则可以显示两个或更多)。

ITjob网有关于Android的文章和帖子,如果你想了解的更细致的话,可以自己去看看。也可以去相关的论坛,或者大牛的博客看看。希望对你有帮助。

Android——Fragment

Fragment必须总是被嵌入到一个activity之中,并且fragment的生命周期直接接受其宿主activity的生命周期的影响。你可以认为fragment是activity的一个模块零件,它有自己的生命周期,接收它自己的输入的事件,并且可以在activity运行时添加或者删除。

应该将每一个fragment设计为模块化和可复用化的activity组件。也就是说,你可以在多个activity中引用同一个fragment,因为fragment定义了它自己的布局,并且使用它本身生命周期回调的行为。

Fragment比Activity多了几个额外的生命周期回调方法:

管理fragment生命周期与管理activity生命周期很相像,像activity一样,fragment也有三种状态:

1、Resumed:

fragment在运行中的activity中可见。

2、Paused:

另一个activity处于前台且得到焦点,但是这个fragment所在的activtiy仍然可见(前台activity部分透明,或者没有覆盖全屏)。

3、Stopped:

fragment不可见。要么宿主activity已经停止,要么fragment已经从activity上移除,但已被添加到后台栈中。一个停止的fragment仍然活着(所有的状态和成员信息仍然由系统保留着)。但是,它对于用户来讲已经不再可见,并且如果activity被杀掉,它也将被杀掉。

如果activity的进程被杀掉了,在activity被重新创建时,你恢复fragment状态。可以执行fragment的onSaveIntanceState()来保存状态(注意:fragment是在onCreate(),onCreateView()或者onActivityCreate()中进行恢复)。

在生命周期方面,activity和fragment之间一个很重要的不同就是在各自的后台栈中是如何存储的。当activity停止时,默认情况下activity被安置在由系统管理的activity后台栈中;fragment仅当在一个事务被移除时,通过显式调用addToBackStack()请求保存的实例,该fragment才被置于由宿主activity管理的后台栈。

类似与Android系统为Activity维护一个任务栈,我们也可以通过Activity维护一个回退栈来保存每次Fragment事务发生的变化。

如果你将Fragment任务添加到回退栈,当用户点击后退按钮时,将看到上一次的保存的Fragment。一旦Fragment完全从后退栈中弹出,用户再次点击后退键,则退出当前Activity。

通过Arguments创建Fragment,不建议通过为Fragment添加带参数的构造函数

1、FragmentPagerAdapter:对于不再需要的fragment,选择调用detach方法,仅销毁视图,并不会销毁fragment实例。

2、FragmentStatePagerAdapter:会销毁不再需要的fragment,当当前事务提交以后,会彻底的将fragment从当前Activity的FragmentManager中移除。

3、懒加载,核心方法是 setUserVisibleHint()

原因1:横竖屏切换,造成Fragment重新实例化。

原因2:按下Home键,Activity处于后台,由于内存不足被销毁,重新唤醒时Fragment重新实例化。

注:出现的原因是在 API24 之前的 v4包 的源码问题,

解决方案:通过检查onCreate的参数Bundle savedInstanceState就可以判断,当前是否发生Activity的重新创建:

默认的savedInstanceState会存储一些数据,只有在savedInstanceState==null时,才进行创建Fragment实例:

在Android开发中fragment有什么优缺点

Fragment优点

Fragment可以使你能够将activity分离成多个可重用的组件,每个都有它自己的生命周期和UI。

Fragment可以轻松得创建动态灵活的UI设计,可以适应于不同的屏幕尺寸。从手机到平板电脑。

Fragment是一个独立的模块,紧紧地与activity绑定在一起。可以运行中动态地移除、加入、交换等。

Fragment提供一个新的方式让你在不同的安卓设备上统一你的UI。

Fragment 解决Activity间的切换不流畅,轻量切换。

Fragment 替代TabActivity做导航,性能更好。

Fragment 在4.2.版本中新增嵌套fragment使用方法,能够生成更好的界面效果。

Fragment做局部内容更新更方便,原来为了到达这一点要把多个布局放到一个activity里面,现在可以用多Fragment来代替,只有在需要的时候才加载Fragment,提高性能。

可以从startActivityForResult中接收到返回结果,但是View不能。

反正我是没有看到fragment有什么缺点(可能是我程度没达到),再说它(fragment)就是一个api而已感觉不好就用activity就ok了。

Android的Fragment知识点

frgment被创建的时候,相关的生命周期,

onAttach(), onCreate(), onCreateView(), onActivityCreated();

fragment对用户可见的时候,相关的生命周期,

onStrat(), onResume(),

fragment进入“后台模式”的时候,相关的生命周期,

onPause(), onStop(),

fragment被销毁的时候,相关的生命周期,

onPause(), onStop(), onDestroyView(), onDestroy(), onDetach()

可用onCreate()、onCreateView()、onActivityCreated()方法Bundle对象保存一个fragment的对象

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解除关联时调用。


文章标题:androidfragment,android fragment和activity的区别
文章来源:http://cqcxhl.com/article/dsiedog.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP