一种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开发中占据着重要的地位,无论是在进程间通信.本地数据存储又或者是网络数据传输都离不开序列化的支持.而针对不同场景选择合适的序列化方案对于应用的性能有着极大的影响. ...
随机推荐
- JAVAEE学习——hibernate01:简介、搭建、配置文件详解、API详解和CRM练习:保存客户
今日学习:hibernate是什么 一.hibernate是什么 框架是什么: 1.框架是用来提高开发效率的 2.封装了好了一些功能.我们需要使用这些功能时,调用即可.不需要再手动实现. 3.所以框架 ...
- 【数据结构】Trie树
数据结构--Trie树 概念 Trie树,又称字典树.前缀树,是一种树形结构,是一种哈希树的变种.典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计 ...
- Linux-I/O五种模型
一. 概念说明 在进行解释之前,首先要说明几个概念: 用户空间和内核空间 进程切换 进程的阻塞 文件描述符 缓存 I/O 同步(Sync)/异步(Async) 阻塞(Block)/非阻塞(Unbloc ...
- 【BZOJ 3160】 3160: 万径人踪灭 (FFT)
3160: 万径人踪灭 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 1440 Solved: 799 Description Input Outp ...
- 背包的第k优解[动态规划]
From easthong ☆背包的第k优解 描述 Description DD 和好朋友们要去爬山啦!他们一共有 K 个人,每个人都会背一个包.这些包的容量是 ...
- App图标生成器的实现,附源码
背景 网上各种生成app图标的网站和工具,感觉还是用自己写的心里畅快点,所以花了1个小时自己写了个.按照网上给的图标尺寸规范把所有尺寸的都生成了. 建了一个讨论群,533838427.很明显是针对独立 ...
- 两个函数彻底理解Lua中的闭包
本文通过两个函数彻底搞懂Lua中的闭包,相信看完这两个函数,应该能理解什么是Lua闭包.废话不多说,上 code: --[[************************************** ...
- BSGS算法+逆元 POJ 2417 Discrete Logging
POJ 2417 Discrete Logging Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 4860 Accept ...
- 提示框框架KVNProgress介绍
gitHub上面有很多显示加载进度的框架,这里我们介绍一下KVNProgress框架,KVNProgress是一个可以完全定制的HUD(指示器),你可以设置加载进度的画面是否全屏,可以自己修改进度显示 ...
- Android中的数据存储(二):文件存储 2017-05-25 08:16 35人阅读 评论(0) 收藏
文件存储 这是本人(菜鸟)学习android数据存储时接触的有关文件存储的知识以及本人自己写的简单地demo,为初学者学习和使用文件存储提供一些帮助.. 如果有需要查看SharedPreference ...