一种Android数据请求框架
大部分Android应用一般都涉及到跟server的交互,除非是某些单机应用。既然要跟server打交道,向server请求数据差点儿是必做的事情,或许每家的APP都有一套自己的详细实现逻辑。但我们还是能够抽象出来一个通用的数据请求框架。
先上图:
我们来详细分析一下。首先竖直虚线左側是Androidclient。右側是server、后台数据库。
左側图中,3个灰色的模块就是Android中的MVC(具体介绍请參考之前的一篇文字《Android中的MVC模式简单介绍》),当中Activity或Fragment充当了Controller的角色。
接下来我们具体介绍下具体的步骤:
1.在Android应用中。用户一般都通过View来交互。比方点击某个button调用接口请求数据,或者对ListView进行下拉刷新等,所以非常多时候我们是通过View来告诉Controller须要请求数据,当然也有例外的情况,比方当载入某个Activity时就须要先请求数据,此时不须要第1步的通过View来触发请求。
2.这一步比較简单。就是向server发送http请求。在Android应用中,一般都是通过http的方式来请求数据的,请求过程中附带必需的參数。为了防止ANR。此操作包或兴许的3、4、5步都应当在子线程中实现。
3.server向client返回数据。通常就是轻量级的易传输的JSON格式,当然也有使用XML格式的。
4.client拿到JSON格式的返回结果后,我们并不能直接使用。须要使用一个解析器Parser,把JSON数据解析成我们须要的数据模型。即得到Models。在这里,假设是某些特殊的数据或者产品需求,能够对数据做缓存处理,当网络异常或者下次不想联网请求数据时,我们能够直接从Cache中拿数据来使用。
5.当数据被解析成Models之后,Controller就能够使用它来更新视图了,解析数据完毕后,一般都会设置一种机制来通知Controller。方法有非常多,比方Android的消息机制。
6.最后一步是Controller使用Models中的数据来更新View。须要注意的是必须在UI线程来运行。
数据请求框架大概就是这样,比較清楚的一个逻辑。我们请求的数据中不可避免地会有图片数据,那么图片怎样下载、怎样做缓存,又是一个非常大的问题,在这里先总结这个整体的数据请求框架,兴许会总结一下关于图片下载、缓存、载入的框架。
一种Android数据请求框架的更多相关文章
- Android网络请求框架AsyncHttpClient实例详解(配合JSON解析调用接口)
最近做项目要求使用到网络,想来想去选择了AsyncHttpClient框架开进行APP开发.在这里把我工作期间遇到的问题以及对AsyncHttpClient的使用经验做出相应总结,希望能对您的学习有所 ...
- Android Http请求框架二:xUtils 框架网络请求
一:对Http不了解的请看 Android Http请求框架一:Get 和 Post 请求 二.正文 1.xUtils 下载地址 github 下载地址 : https://github.com/w ...
- Android Http请求框架一:Get 和 Post 请求
1.HttpUtil package com.app.android01; import java.io.BufferedReader; import java.io.IOException; imp ...
- Android网络请求框架
本篇主要介绍一下Android中经常用到的网络请求框架: 客户端网络请求,就是客户端发起网络请求,经过网络框架的特殊处理,让后将请求发送的服务器,服务器根据 请求的参数,返回客户端需要的数据,经过网络 ...
- Android 网络请求框架android-async-http问题
今天通过接口请求服务器的一些app数据,发现一个很奇怪的问题,请求一个链接的时候,通常在第一次请求发起的时候没有什么问题,能很快的拿到数据,但是 往后再去请求的时候就会等待很久,而且最后会请求失败,一 ...
- Android网络请求框架之Retrofit实践
网络访问框架经过了从使用最原始的AsyncTask构建简单的网络访问框架(甚至不能称为框架),后来使用开源的android-async-http库,再到使用google发布的volley库,一直不懈的 ...
- Java/Android 网络请求框架/库
Android 图片缓存框架 最上面的最优先 com.facebook.fresco:fresco:0.12.0 7.26.2016最新 Universal-Image ...
- Android 网络请求框架Retrofit
Retrofit是Square公司开发的一款针对Android网络请求的框架,Retrofit2底层基于OkHttp实现的,OkHttp现在已经得到Google官方认可,大量的app都采用OkHttp ...
- 几种Android数据序列化方案
一.引言 数据的序列化在Android开发中占据着重要的地位,无论是在进程间通信.本地数据存储又或者是网络数据传输都离不开序列化的支持.而针对不同场景选择合适的序列化方案对于应用的性能有着极大的影响. ...
随机推荐
- java浅拷贝和深拷贝(基础也是很重要的)
对象的copy你兴许只是懵懂,或者是并没在意,来了解下吧. 对于的github基础代码https://github.com/chywx/JavaSE 最近学习c++,跟java很是相像,在慕课网学习c ...
- 6大原则java
1.开闭原则(Open Close Principle)定义:一个软件实体如类.模块和函数应该对扩展开放,对修改关闭. 开放-封闭原则的意思就是说,你设计的时候,时刻要考虑,尽量让这个类是足够好 ...
- 一个简单的ConnectionPool,手动搞
看了一圈, 没看到稍微好用的ConnectionPool, 除了一个aiomysql, 但是这个是异步的, 我暂时没有用到这么高版本的Python, 所以就动手造一个轮子. 原理比较简单, 先造一个线 ...
- redis:CLUSTER cluster is down 解决方法
redis:CLUSTER cluster is down 解决方法 首先进入安装目录的src下: 1. ./redis-trib.rb check 127.0.0.1:7001 检查问题所在 2. ...
- 【BZOJ 4665】 4665: 小w的喜糖 (DP+容斥)
4665: 小w的喜糖 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 94 Solved: 53 Description 废话不多说,反正小w要发喜 ...
- tyvj Easy
Easy [描述 Description] 某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:(我们来简化一下这个游戏的规则 有n次点击要做,成功了就是o,失败了就是x,分 ...
- [BZOJ3992][SDOI2015]序列统计(DP+原根+NTT)
3992: [SDOI2015]序列统计 Time Limit: 30 Sec Memory Limit: 128 MBSubmit: 1888 Solved: 898[Submit][Statu ...
- [BZOJ4016][FJOI2014]最短路径树问题(dijkstra+点分治)
4016: [FJOI2014]最短路径树问题 Time Limit: 5 Sec Memory Limit: 512 MBSubmit: 1796 Solved: 625[Submit][Sta ...
- HDU 4579 Random Walk (解方程组)
Random Walk Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 65535/65536 K (Java/Others)Total ...
- JAVA包管理
package cn.java.mybole; class test6 { public static void main(String[] args) { System.out.println(&q ...