当前位置:首页 » 安卓系统 » android数据封装

android数据封装

发布时间: 2023-06-15 12:22:15

① Android 关于 OkHttp 请求对参数进行加解密的封装

加密的情况下,数据一般是这样的(当然,data 也可能是一个列表):

加密的情况下:

这里不强制要求返回类型是 Result,只需要服务端返回的 json 数据的第一层级中有 "data" 字段即可,取出该字段进行解密,并重新赋值该字段,然后再进行解析

interceptor 的方式效率要高点,但是 converter 的枯橡方式要更加灵活点。

这里采用了把 encryptKey 也放在 body 里一起传输的方案,所以实现起来有点麻烦;其实也可以选择把 encryptKey 放没亏旁在 header 里,然后对 body 整体加解密的方案,这样实现起来就会空世简单一些

② Android里的封装,继承,多态,都是表现在哪里,都是有什么方法,有什么

封装,例如android中一个View就是封装了一系列的方法,这些方法系统已经给你封装好了,你只需要去调用即可。
继承,例如一个Activity(界面),创建一个界面就需要去继承它,因为android中每个界面都是一个activity组成的(Fragment也是运行在activity中的)。
多态,这个比较抽象也比较难解释,就像一个View,给它注册一个点击事件来说吧,系统用的只是一个接口,但是用户可以用一个实现接口的类来处理这个点击事件,这就是多态性,因为对于android来讲,它根本不知道用户会起个什么名实的类,它只要你实现它的接口即可。

③ Android 基类BaseActivity的封装

摘要
本篇总结了前人写的BaseActivity,自己在开发过程中也添添补补,删删改改,现在总结下。

本篇很多知识借鉴和学习了知乎上iYng大大的回答,先感谢一波。顺便上原文链接:
https://www.hu.com/question/47045239/answer/105086885

正文
一般来说,不同的项目的BaseActivity不尽相同,根据不同的业务逻辑和功能需求,会有很多区别。这里总结了一些,如下:

视图相关
一般的Activity里都会用到很多的findViewById这个方法,而且每次都要强制类型转换,这样会显得很繁琐,如果在BaseActivity里封装好,就能省事:

这样只要是继承了BaseActivity就能轻松使用LinearLayout llContent = findView(R.id.ll_content);,免去了诸多类型转换的麻烦。

然后说起视图,一般的Activity里都会需要初始化视图和数据,所以可以暴露两个方法initView()和initData():

然后在setContentView里去调用,一般都是先initView,然后再initData:

这样子类里都必须重写initView()和initData()了,逻辑也能清晰点,不然什么东西都放在onCreate里,就很乱了;

用户模块(业务相关【可选】)
不过一般的app,只要是有登录的,就会有用户模块,也会根据用户标识id去进行一些网络操作,所以用户模块可以在BaseActivity中暴露一些方法,比如用户id的获取:

这里就是返回了SharedPreference里存储的用户id,在用户id大量被使用的场景下,这样的封装还是很有必要的,使用起来也更便捷。当然如果只是纯展示的app就不一定需要了,或许显得多余。

界面间跳转传参
很多时候,Activity之间都会传参,所以可以封装一个参数处理的函数initParam(),在BaseActivity的onCreate里去判断是否有参数传过来;

然后把initParam()方法暴露给子类:

这个方法并不是必须重写的,因为传参也没有想象中那么多,并不需要强制重写这个方法。

一般会在Application类里去定义一个isDebug来判断是否开启调试(开发者模式):

在BaseActivity里,我们可以把isDebug作为总开关,然后控制是否显示调试信息:

这样一键关闭调试,不用去一个个删项目里的Log信息,是不是很赞?

每次Toast,都用Toast.makeText(...).show();是不是很烦?那么可以在BaseActivity里封装下,比如:

这里ToastUtils就是一个Toast封装类,里面的内容估计大家都懂。然后这样一来,所有子类在使用时,只需要潇洒写一句toast("xxxx")就行了,当然也可以一并封装Toast.LENGTH_LONG和Toast.LENGTH_SHORT,按需封装吧。

其他
软键盘
有的app里,用户输入的情景会比较多,这个时候,软键盘的隐藏就用的多了,用户输入完之后,或者用户点击屏幕空白处,都应该去隐藏软键盘,这样的话,可以考虑在BaseActivity里写隐藏的方法:

上面3个方法也是很实用的。dispatchTouchEvent方法不需要手动调用,只要是有点击事件,并且点击在软键盘和EditText区域外,就会隐藏软键盘。

防止快速点击
有时候,用户(特别是测试猿)会疯狂的点击app,这一举动的原因和意义不明,但是我们可以设置防止快速点击给app造成的伤害和负担:

这样在1秒之内只会响应一次,麻麻再也不用担心我手抽筋乱点了。
那么怎么用呢?举个栗子,可以在onClick接口里去判断下嘛:

页面跳转:startActivity、startActivityForResult
这个也是可选的,可以封装下,达到每次跳转不需要传this或者XXXXX.this这种参数:

这些方法还是很便捷的,使用时可以简单的使用startActivity(MainActivity.class);,也可以传Bundle参数。

是否允许全屏
设置一个成员变量mAllowFullScreen

通过在BaseActivity的onCreate方法里判断mAllowFullScreen来设置是否允许全屏:

然后给子类暴露一个方法来设置mAllowFullScreen:

设置沉浸式状态栏
跟设置全屏一样一样的:

然后BaseActivity的onCreate里:

然后定义steepStatusBar()方法,用来设置沉浸式状态栏:

这里就要判断系统版本了。只有在KITKAT以上才有作用。
最后给子类暴露方法,设置 isSetStatusBar的值:

设置是否允许屏幕旋转
跟前面两种思路一样,通过判断变量,在onCreate里设置咯:

BaseActivity里的onCreate方法:

最后暴露方法设置isAllowScreenRoate的值:

总结
上面的这些方法大都是比较常用的,有些虽然不是很常用,但是写了也会方便一点,把这篇文章当做一个汇总,然后按需使用呗。

④ android 数据库表查询出来的多条记录返回客户端怎么封装成json string

sqlite中每一行看成一个JSONObject,结果集看成jsonarray。

⑤ android studio pickerview 数据怎么封装

封装就是数据打包,拆包就是解包。1般发送方把需要发送的数据打包发出去后,接收方收到包后解包解出数据。

热点内容
bin存储 发布:2025-02-07 20:00:50 浏览:202
android加载界面 发布:2025-02-07 19:55:28 浏览:870
好矿云服务器 发布:2025-02-07 19:54:31 浏览:948
java电话簿 发布:2025-02-07 19:49:26 浏览:796
超级脚本制作 发布:2025-02-07 19:31:30 浏览:487
怎么查看支付宝的账号密码 发布:2025-02-07 19:26:48 浏览:17
惠普服务器查看ip指令 发布:2025-02-07 19:26:47 浏览:435
算法设计模式 发布:2025-02-07 19:15:52 浏览:746
服务器1u能连接几台电脑 发布:2025-02-07 18:50:02 浏览:154
立人编译 发布:2025-02-07 18:48:32 浏览:766