Fragment、ViewPager代码剥离为Activity

一、成员变量

  Fragment、ViewPager里的成员变量,分为基本类型、引用类型。基本类型如int,引用类型如List<E>。该类型成员变量,不论final、static,直接粘贴复制。

  成员变量里,可能存在实例化的类。如View、Adapter。如果是View,需要注意下视图xml的变量名,将里面的变量名如@+/id="item_clicked",更改成@+/id="activity_item_clicked"。如果是Adapter,一般需要分析下业务逻辑,业务Adapter需要粘贴复制,ViewPager的Adapter直接优化删除。

二、成员方法

  任何“眼熟”的代码逻辑,出现3次,说明这段代码可以优化,可以抽为一个行为对象、数据对象。任何“眼熟”的代码逻辑,出现5次,说明这位程序员的开发功力,十分糟糕。代码逻辑就是方法。

  剥离代码时,成员方法冗余的,比如在Fragment里初始化界面,但是新的Activity里不存在界面,这种冗余方法可以归类、删除。 成员方法的业务逻辑重要的,保留原有位置,方便查看History。对新的Activity,里面逻辑判断冗余、逻辑判断不足的,优化方法。对一部分业务代码,感觉在阅读时、在执行时,不舒服,直接生成新的方法。

三、状态方法

  保证剥离代码后的方法,是一个比较稳定的状态积。Activity的生命周期,分为onCreate()、onStart()、onResume()、onPasue()、onStop()、onDestory、onRestart()、onSaveInstantState()、onRestoreInstantState()。Fragment的生命周期,onAttach()、onCreate()、onDestory()、onDetach(),这四个状态方法一般在宿主Activity里,不需要关注。Fragment的生命周期,onCreatedView()、onActivityCreated()、onStart()、onResume()、onPause()、onStop()、onDestoryView(),跟Activity的状态方法是一致的。

  需要注意的事,耗时操作不能放在Fragment的onCreateView()里,因为这个是界面展示前的状态,也不能放在Activity的onCreate()里。在Fragment的onDestoryView()里做一些对象引用制空,可以改变对象的JVM内存类型,从强引用变为虚引用,让GC回收。这部分操作也剥离至Activity的ondestory()里。

 

  新的Activity,要酌情设置启动模式。

四、界面优化

  Activity本质,是个View+XML+SystemStateContorl+......

  Fragment本质,是个View+XML+SystemStateContrl(smaller)+.....

  Activity不具备Fragment的懒加载,不能使用View对象做缓存,这个点确实没有想通。一般都是Activity改成Fragment,这样便于轻量级操作。但是物极必反,Fragment剥离成Activity,也是有一定道理的。

  界面优化,重点关注下动画效果。重点关注下去掉Fragment的Adapter后,一部分数据的接口回调。

 

请指正。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值