一、成员变量
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后,一部分数据的接口回调。
请指正。
网友评论