Rinc

Results 5 comments of Rinc

承蒙 [@start141](https://github.com/start141) 邀请。 不过之前实际开发中没有遇到过类似场景,这里说一点自己的想法,算是抛砖引玉。 1. 首先使用三个 buffer 算是比较可取的,否则保存太多不仅处理不过来还容易造成 OOM;前段时间看 Framework 层的 Surface 系统就只用了两个,FrontBuffer(mPostedBuffer) 和 BackBuffer; 2. 多个 buffer 需要实时处理可以试试 JDK 中的并发相关 API,比如 [ `ExecutorService`](http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8-b132/java/util/concurrent/ExecutorService.java); 3. 刚刚想到了 zxing 项目,初看了下 [`PreviewCallback`](https://github.com/zxing/zxing/blob/master/android/src/com/google/zxing/client/android/camera/PreviewCallback.java) 和...

[源码](http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.0.2_r1/android/hardware/Camera.java)里面这两个方法的注释说的很清楚了。 `addCallbackBuffer()`: > Adds a pre-allocated buffer to the preview callback buffer queue. > Applications can add one or more buffers to the queue. > When a preview frame arrives...

上面注释已经说的很清楚了。那我再翻译并概括一下: 1.可以多次添加buffer到queue,如果preview帧到达时该buffer可用就从queue取出来;如果不可用就丢弃该帧; 2.每次preview并且buffer可用的时候callback会被重复调用; 3.通过对buffer内存的重用可以提高preview效率和帧率; 至于适用场景,应该是需要实时预览,并且对质量和帧率要求很高的时候。

1. 继承自 `ContextWrapper`,可用于保存应用全局变量,或者通过全局 `Context` 注册广播等等(生命周期不受 `Activity` 等影响); 2. 实现了 `ComponentCallback2` 接口,可以在 `onConfigurationChanged`(屏幕方向改变等)、`onLowMemory`/`onTrimMemory`(内存不足)时调用组件的相关回调; 3. 提供了注册 `ActivityLifecycleCallbacks` 和 `ComponentCallbacks` 的 public 方法,可以用于监控应用内组件的状态(比如实现类似 Umeng 的统计页面停留时长和访问路径等);

是的,确实不建议直接在自定义 `Application` 内保存全局变量(虽然很多人这么做),源码中的表述是“维持全局应用状态”: > Base class for those who need to maintain global application state. 我上面表述不太准确。