一、网络框架
1.转换实体
通常API接口的返回值是Jason数据类型的,网络框架帮助我们将其转换为Entity。
2.提供回调
网络请求结束后应调用回调方法,至少有success和failed两种不同的回调,还要能够根据不同业务需求扩展出其它类型。还要注意两种不同的使用场景:与用户界面相关的请求和与界面无关的请求。前者可能需要框架根据用户界面的显示状态控制网络请求。例如在请求未收到服务端响应时用户关闭界面,此时框架应当将网络请求标记为取消,既节省资源又能防止回调时因用户界面已销毁造成异常。而与用户界面无关的网络请求更易于复用。
因此需要为不同类型的网络请求分别提供回调接口。
3.控制用户界面的展示状态
页面信息未获取到的时候展示加载状态,请求回调成功后取消加载状态,如果请求失败展示错误状态,并提供用户重试请求的逻辑。如果能框架够很好的控制这些状态就避免许多网络请求成功却无法展示界面这样的问题。
应用进行提交信息的网络请求时需要在界面上展示上传中的浮层,防止用户重复点击或进行其它操作。
4.文件上传工具
图片上传是经常执行的操作,通常需要支持批量上传、断点续传并且提供上传状态的回调。上传过程中可能需要在用户界面展示进度提示。
二、应用界面框架
1.提供不同状态的展示
应用中通常需要有正在加载、请求失败、数据为空三种特殊状态的界面。页面展示状态受网络连接和应用逻辑的控制。状态应能主动设置,同时对通用的情形应该与网络框架配合处理。
2.列表页面
Adapter+ViewHolder;列表样式和点击效果;下拉刷新上拉加载;Item固顶效果;
3.提示工具
提示框;Toast;Loading提示;
4.浏览器
基本的界面展示;能处理跳转到源生页面;
5.重复点击处理
短时间内多次点击一个View时可能会重复开启界面、重复调用接口造成逻辑错误。为了避免因用户手抖引发的错误,框架最好能够提供通用的解决方案。但要注意避免引起按钮点击无响应这样更严重的问题。
6.常用的界面工具
1.时间选择器
可以根据业务需要组合选择年月日,可以设置起始和截止日期,能够自定义界面样式。
2.各种形状的ImageView
可选择边框,常见的有圆形、圆角矩形、正方形。
3.禁止滚动的ListView
配合ScrollView使用,用于一些布局复杂的页面。
4.横向ListView
有时需要这种布局展示。
5.流式布局FlowView
常配合标签使用,虽然不是系统提供的ViewGroup但是在应用中使用非常广泛。
三、错误处理
每个应用都应该有一个CrashHandler,基础的处理有错误记录和异常上报。还可以做成自动重开当前错误页面,避免Crash。当多次启动连续Crash时采取清除本地数据或更新应用等处理方式。
四、应用界面栈管理
虽然Android系统有Activity Stack,但它对用户空间并不开放。有时我们需要有全局的入口获取当前展示的Activity。或是将所有Activity出栈,只展示应用首页。框架需要提供工具类
五、线程管理
应用中经常有一些逻辑需要放在线程中处理,如果没有统一线程池可能造成开发人员随手创建一个线程,没有及时关闭,效率低下容易出错并且影响性能。因此框架应提供公用线程池,可满足不同优先级的线程运行,支持定时任务。
以上是本人在开发中总结出的Android应用开发框架应提供的功能。一个完善的应用框架能够提升开发效率,增强应用的稳定性。但在实际项目中,由于种种原因,框架可能不够完善,或是不得不做出一些妥协。思考什么样的框架适合你的项目,看看还有什么不足然后试着完善它。