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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,905评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,140评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,791评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,483评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,476评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,516评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,905评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,560评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,778评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,557评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,635评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,338评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,925评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,898评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,142评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,818评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,347评论 2 342

推荐阅读更多精彩内容

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