临时记录
来源:互联网 发布:帝国cms支付宝接口 编辑:程序博客网 时间:2024/06/05 00:31
1、网络库、网络框架
说明其各个的优缺点,说明自己使用的体会
网络库(实现方式的理解对比几个图片加载库)
httpClient
早时候的sdk自带的同步网络库,现在已经废弃了(性能和缓存上原因,且只支持同步)
自己写的话配合AsyncTask也挺好用
android-async-http 封装httpClient的异步网络库
volley 封装httpUrlConnection的异步网络库,实现了http协议缓存,虽然也可以切换okHttp,但要需要熟悉里的接口
定位是轻量级网络交互,适合大量的,小数据传输
缺点:1、不支持同步,会限制开发模式
2、不能post大数据,所以不适合用来上传文件。
okhttp 高性能同步异步底层网络库,api简洁友好,优雅的缓存机制(对比UIL自己做的文件缓存,完全没有使用http层面的缓存)
是基于http协议封装的一套请求客户端,虽然它也可以开线程,但根本上它更偏向真正的请求,跟HttpClient, HttpUrlConnection的职责是一样的。
网络框架
volley、retrofit、android-async-http
封装了具体请求,解决了 参数传递、线程切换、数据解析 这些业务工作
retrofit 封装http的网络请求框架,简化了网络请求流程,通过注解方便发起各种请求,可以无需要任何包装直接在项目中使用。支持rxjava;
2、几种启动模式的应用场景
a、一健退出应用,对主页应用singleTask模式,需要退出时 start主页,在主页的onNewIntent中 finish主页, 实现清理主页之上的所有Activity的目的.
singleTop 栈顶复用
使用场景:资讯阅读类 APP 的内容界面。
举例:今日头条就是这种方式 singleTop + onNewIntent
singleTask 栈内复用,并清除之上的Activity
大部分app的主页,但从产品设计上来说,这种从其它界面直接打开主页 并清除之上的界面 的设计也是非常不合理的
singleInstance
建新栈,并复用此栈 + onNewIntent()
相关问题:
问题一:Act1通过 startActivityForResult 启动的Activity2,而Act2 在Manifest.xml中为 singleTask模式,这时Act1的onActivity会立即被调用
问题一答案:Android 5.0 之后修复了这个问题。
问题一的引申问题:
虽然5.0之后的singleTask模式 已经解决了 会立即 回调 Act1的onActivityResult 的问题。
但 5.0之后 intent中设置为 FLAG_ACTIVITY_NEW_TASK 时仍然会有这个问题
总结:只要不和原来的 Activity 在同一个 Task ,就会产生这种立即执行 onActivityResult() 的问题
3、键盘跳跃的处理 指的是 什么?
4、Choreographer基本原理就是能接受每次的Vsync信号,然后依次处理跟UI相关的事件(依次是Input触摸事件(例如你的手指滑动)、动画、绘图)。
private final Choreographer.FrameCallback mFrameCallback = new Choreographer.FrameCallback() { @Override public void doFrame(long frameTimeNanos) { doAnimationFrame(getProvider().getFrameTime()); if (mAnimationCallbacks.size() > 0) { getProvider().postFrameCallback(this); } }};
try { Trace.traceBegin(Trace.TRACE_TAG_VIEW, "Choreographer#doFrame"); AnimationUtils.lockAnimationClock(frameTimeNanos / TimeUtils.NANOS_PER_MS); mFrameInfo.markInputHandlingStart(); doCallbacks(Choreographer.CALLBACK_INPUT, frameTimeNanos); mFrameInfo.markAnimationsStart(); doCallbacks(Choreographer.CALLBACK_ANIMATION, frameTimeNanos); mFrameInfo.markPerformTraversalsStart(); doCallbacks(Choreographer.CALLBACK_TRAVERSAL, frameTimeNanos); doCallbacks(Choreographer.CALLBACK_COMMIT, frameTimeNanos);} finally { AnimationUtils.unlockAnimationClock(); Trace.traceEnd(Trace.TRACE_TAG_VIEW);}
APP的动画的驱动模式了: Vsync--->编舞者(即Choreographer.java)--->AnimationHandler--->ValueAnimator--->APP设定的回调
5、一个ImageView 的 android:src 设置为 .9,同时 scaleType 设置为 centerCrop,最张效果会怎样? 如果是 android:background设置为 .9图片, 同时 scaleType 设置为 centerCrop,最张效果会怎样?
6、Glide 3.7 用法阅读体会
glide thumbnail 的具体应用场景?
glide的into里 用 匿名内部类 的 SimpleTarget 为啥可能 被GC回收?
难道是 3.7的源码是用 弱引用持有 into的对象? 而4.0修复了这个问题
SimpleTarget target 定义时 声明 不能带上 泛型,否则into时报错
transformation 可以对图片的任意属性:尺寸,范围,颜色,像素位置等等进行变换,Glide 已经包含了2个 ,我们之前已经看了图像重设大小,即:fitCenter 和 centerCrop
对 transform 确保你只调用了一次 .transform() 或 .bitmapTransform(),否则,之前的配置就会被覆盖掉的!然而,你还是可以运用多种转换的,通过传递多个转换对象作为参数传给 .transform() 或 .bitmapTransform()。
提示:当你用了 transform 转换后你就不能使用 .centerCrop() 或 .fitCenter() 了。因为CenterCrop 就是 继承自BitmapTransformation,而重复设置transform是会被覆盖的
animate 动画仅仅用于不从缓存中加载的情况。如果图片被缓存过了,它的显示是非常快的,因此动画是没有必要的,并且不显示的。
anim xml动画资源文件只能用于 target是 ImageView 的场景;如果target是自定义View, 请使用 ViewPropertyAnimation.Animator
7、glide 4.0 的一些细节
1、Fallback Drawables are shown when the requested url/model is null
2、transform 只会应用到 要加载的资源图片上,不会应用到 placeHolder、fallback、error占位符上
3、Glide 4 默认使用 ARGB_8888
4、transform 改为 TransitionOptions, 禁用过度动画请使用 TransitionOptions.dontTransition()
5、transform 和 transition 的区别 ?
6、options1.override(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL)
- 临时记录
- 临时记录
- 临时记录
- 临时记录
- 临时记录
- 临时记录
- 临时记录
- 临时记录
- 临时记录
- 临时记录
- 临时记录
- 临时记录
- 临时记录
- 临时记录
- 临时记录
- 临时记录
- 临时记录
- 临时记录
- 一个简单的PHP留言板
- msp430设置串口波特率的方法
- linux 多线程信号处理总结
- 最全的Android的CPU各种模式设置及作用
- NOIP知识汇总及模板整理
- 临时记录
- 一知半解学CubeMX——UART:Printf实现
- authentication failure的解决办法
- springMvc--接受请求参数
- CS 400 Expect Merge 期望+暴力
- Java自定义日期处理工具类
- 附件上传_C#
- CSS盒子模型
- 写出优质Java代码的4个技巧