文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

android中gzip数据压缩与网络框架解压缩怎么实现

2023-07-04 13:57

关注

这篇“android中gzip数据压缩与网络框架解压缩怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“android中gzip数据压缩与网络框架解压缩怎么实现”文章吧。

theme: smartblue

gzip是一种常用的压缩算法,它是若干种文件压缩程序的简称,通常指GNU计划的实现,此处的gzip代表GNU zip。

HTTP协议上的GZIP编码是一种用来改进WEB应用程序性能的技术。大流量的WEB站点常常使用GZIP压缩技术来让用户感受更快的速度。

开GZIP有什么好处?

Gzip开启以后会将输出到用户浏览器的数据进行压缩的处理,这样就会减小通过网络传输的数据量,提高浏览的速度。

Java中gzip压缩和解压实现

字节流压缩:

        public static byte[] gZip(byte[] data) {        byte[] b = null;        try {            ByteArrayInputStream in = new ByteArrayInputStream(data);            ByteArrayOutputStream out = new ByteArrayOutputStream();            GZIPOutputStream gzip = new GZIPOutputStream(out);            byte[] buffer = new byte[4096];            int n = 0;            while((n = in.read(buffer, 0, buffer.length)) > 0){                gzip.write(buffer, 0, n);            }            gzip.close();            in.close();            b = out.toByteArray();            out.close();        } catch (Exception ex) {            ex.printStackTrace();        }        return b;    }

字节流解压:

        public static byte[] unGZip(byte[] data){        // 创建一个新的输出流        ByteArrayOutputStream out = new ByteArrayOutputStream();        try {            ByteArrayInputStream in = new ByteArrayInputStream(data);            GZIPInputStream gzip = new GZIPInputStream(in);            byte[] buffer = new byte[4096];            int n = 0;            // 将解压后的数据写入输出流            while ((n = gzip.read(buffer)) >= 0) {                out.write(buffer, 0, n);            }            in.close();            gzip.close();            out.close();        } catch (Exception e) {            e.printStackTrace();        }        return out.toByteArray();    }

网络框架解压缩(gzip)

一、采用内存数据库保存记录。

二、请求时采用重新开新线程方式,在子线程中请求网络请求。

三、数据请求后,可通过EventBus来设置返回结果的参数和返回信息,若其它类需要获取状态时,需要自己注册监听,动态去获取返回值。

使用场景:应用程序内各组件间、组件与后台线程间的通信。

比如请求网络,等网络返回时通过Handler或Broadcast通知UI,两个Fragment之间需要通过Listener通信,这些需求都可以通过EventBus实现。

使用步骤:

\1. 添加依赖:implementation 'org.greenrobot:eventbus:3.0.0'\2. 注册:EventBus.getDefault().register(this);
构造消息发送类(post调用的对象)
public class Student {private String name;private int age;public Student(String name, int age) {this.name = name;this.age = age;}public void setName(String name) {this.name = name;}public void setAge(int age) {this.age = age;}public String getName() {return name;}public int getAge() {return age;}}
发布消息
EventBus.getDefault().post(new Student("刘哈哈", 27));
接收消息:可以有四种线程模型选择
//接收事件@Subscribe(threadMode = ThreadMode.MAIN)public void studentEventBus(Student student){mShow.setText("姓名:"+student.getName()+" "+"年龄:"+student.getAge());}

解注册(防止内存泄漏):EventBus.getDefault().unregister(this);

网络请求成功后,需要注意文件流的大小,太大容易下载缓慢,解决缓慢问题

JSON返回格式,尽量去KEY,将JSONOBJECT修改为JSONArray格式。

对数据进行压缩,采用GZIP对数据进行压缩处理:网络请求时服务器对数据压缩,移动端请求到结果后,再进行解压。

以上就是关于“android中gzip数据压缩与网络框架解压缩怎么实现”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯