Android应用框架需要做的事情

一、网络框架

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应用开发框架应提供的功能。一个完善的应用框架能够提升开发效率,增强应用的稳定性。但在实际项目中,由于种种原因,框架可能不够完善,或是不得不做出一些妥协。思考什么样的框架适合你的项目,看看还有什么不足然后试着完善它。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,136评论 25 708
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,223评论 4 61
  • 每个人都需要空白如纸,保持清洁的时候。 哪怕这个时间很短,只有那么一天,一上午,一小时。而清洁的内容,可以是自己的...
    diy1947阅读 269评论 0 1
  • 听朋友说她表哥不久前又被抓走了,这次是因为吸毒,她表哥就像劫匪片里的三流角色,没有犯大错的水平,却也不能踏踏实实的...
    明渠映月阅读 771评论 1 12
  • 在面向对想得编程中经过会碰到setter和getter这类访问接口,那么什么时候应该使用呢?使用它的好处是什么呢?...
    沧海梦帆阅读 475评论 1 0