Android 代码优化Tips

写在前面:
开发实现有千千万万种,但是好的代码结构,会带来清晰的逻辑和更优的性能

1.数据与布局异步加载
public class MyListAdapter {
private Context context ;
private ArrayList<String> groupList = new ArrayList<String>();
public MyListAdapter(Context context) {
this . context = context;
}
public void setData(ArrayList<String> data, ArrayList<List<String>> datas){
this . groupList .addAll(data);
notifyDataSetChanged();
}
adapter = new MyListAdapter( mContext );
Observable. create ( new ObservableOnSubscribe<String>() )
.subscribeOn(Schedulers. io ())
.observeOn(AndroidSchedulers. mainThread ())
1 适配器Adapter 可以先初始化,并setAdapter 给到View 布局
2 此时Activity 已经可以完成加载和显示
3 通过rx 异步在io线程中取得数据(网络/数据库/文件),在得到数据后,setData完成界面刷新

特别注意: 界面启动慢,打开慢,绝大部分是数据读取导致 ,比如读取数据库100条数据,基本可以感受到卡顿,或点击无反应/或启动白屏。异步的加载模式可以过滤掉此问题

2.启动页主题
< style name= "LaunchTheme" parent= "AppTheme" >
< item name= "android:windowBackground" >@drawable/bg_launch</ item >
</ style >
setTheme(R.style. AppTheme );
setContentView(R.layout. activity_launch );
1 配置manifest的主题window背景,APP启动时,Activity加载前就不是白屏,而是图片
2 如果Activty 需要在Activity加载后,布局有其它效果,可以在setContentView 之前,手动更换主题,避免window背景图的影响。
特别注意:特别建议Launcher页 设置主题背景,避免长时间白屏

3.经典的MVP模式
public interface HomeContract {
interface View {
void showResult(String result);
}
interface Presenter {
void getData();
}
}
1 接口HomeContract, 抽象出view的显示,和presenter的动作
2 代理HomePresenter执行接口Presenter, 处理数据获取,
建议此处定义和初始化 helper和list数据对象,完全代理托管
3 视图HomeActivity执行接口View, 处理交互与显示
建议此处只定义控件View,adapter对象
(三大部分各自执行函数,和保留对应的数据,从结构上将代码块分开)
特别注意:adapter 和 list数据的处理,建议不要重复定义和存放


猜你喜欢

转载自blog.csdn.net/qq_42022061/article/details/80925070