【学习记录】安卓开发相关总结

我安卓开发也有段时间了,但不做总结的话,也是会忘记的。
在此我对自己使用过的部分组件,先做个文字总结。
等后期我有时间了,就做几期视频来讲一下,
主要讲如何使用,原理相关的讲的不深。

Retrofit:
Retrofit通过java接口和注解来描述的网络连接,然后通过client来
来设置请求头,如果要监听网络请求就在client里面创个方法,使用的是Okhttp来处理请求头和消息监听等操作。之后再调用addCallAdapterFactory,addConverterFactory来设置Rxjava和Gson用于处理网络获取的数据,通过设置好的接口,来设置网络域名类等信息。
之后使用接口回调并设置好Disposable来解决网络获取不统一的问题。

说一下你是如何使用Flowable背压式和Disposable优化网络性能的:
在设置网址的接口里,把属性改成Flowable,Flowable里自带Disposable的背压操作。
当数据处理不过来时,它就不会去处理后续的请求。

说一下你是怎么设置静态壁纸的:
调用的安卓自带的组件,因为我这边项目的画板功能是自定义View写的,保存的时候,第一次是Bitmap类型,所以我用的这个WallpaperManager。

说一下你是如何集成的三方极光推送、友盟:
极光推送和友盟的话,是看的文档接入的,配置好清单文件和初始化操作,就可以到控制台里,推送自己需要的消息。

说一下自定义View:
自制案例:https://github.com/17396743/Canvas_View
(案例里有写大量注释)
1、View的流程主要是measure测量,layout布局,draw绘制。其中measure确定View测量的宽高,layout确定View最终的宽高和四个顶点的位置,而draw是将View绘制到屏幕上。
2、MotionEvent是什么?包含几种事件,什么条件下会产生?
MotionEvent是处理手指后产生的系列事件。有四种事件,分别是刚接触屏幕、在屏幕上移动、从屏幕上松开、保持按下操作从当前控件转移到外层控件这个事件
3、 invalidate()和postInvalidate()的区别 ?
都是用来刷新View主要区别是invalidate()可以在主线程使用,子线程需要配合handler,而postInvalidate()可以直接在子线程使用。
4、SurfaceView和View的区别?
View和SurfaceView都是处理页面,区别在于View是主动刷新页面,而SurfaceView是被动处理。
5、自定义View如何考虑机型适配 ?
合理使用warp_content,match_parent
尽量是使用RelativeLayout相对布局
针对不同的机型,使用不同的布局文件放在对应的目录下,android会自动匹配
使用与密度无关的像素单位dp,sp

说一下RenderScript是怎么使用的:
创建一个RenderScript对象
创建一个RenderScript里面的一个工具ScriptIntrinsicBlur
通过Allocatin将要渲染的图片临时存储到内存中
调用ScriptIntrinsicBlur来控制模糊
调用Allocatin输出图片

说一下融云IM文字聊天是怎么接入的:
下载离线文件,直接通过添加Model的方式加载SDK
项目里主要加了带UI单聊功能,
后面的功能实现是看的文档一步步来的。

融云IM它获取Token比较简单,验证是用的
随机数、当前的时间戳、数据签名,还有一个由Appkey+随机数+当前的时间戳组成的字符串转成SHA1 哈希值 的 Token。
这一步文档里有提示。

注册信息是接入了创蓝万数的闪验 ,通过验证后,就可以获取到当前用户的个人信息。
类似粉丝数、作品数等数据是传到后台自己的服务器。