2017年10月12日
摘要: Looper准备 Handler实例化时,会从当前线程获取Looper,从而获得MessageQueue,用于发送消息。然而,线程不是生来就有Looper对象的,需要在线程执行中调用静态方法Looper.prepare(),最终会调用到如下静态方法: 静态变量sThreadLocal是范型类Thre 阅读全文
posted @ 2017-10-12 12:06 游不动の鱼 阅读(276) 评论(0) 推荐(0) 编辑
  2017年10月8日
摘要: Handler的实例化 在安卓开发中,经常会用到Handler将任务提交到指定线程(例如主线程)去执行或者让其延迟执行。Handler的构造函数有多种重载形式,但最终都调用到如下两种之一: 可以看到:这两个构造函数的区别只是Looper的获取方式不一样,当未指定Looper时,Handler内部会通 阅读全文
posted @ 2017-10-08 22:55 游不动の鱼 阅读(390) 评论(0) 推荐(0) 编辑
  2017年7月10日
摘要: 之前的方案假定Java层更新纹理时使用的是RGB或RBGA格式的数据,但是在播放视频这种应用场景下,解码器解码出来的数据如果是YUV格式,渲染起来就比较麻烦了。一种方式是使用CPU进行YUV转RGB,然后再进行渲染,但是这种方式性能极差;另一种方式是使用GPU进行转换,利用GPU的并行计算能力加速转 阅读全文
posted @ 2017-07-10 16:54 游不动の鱼 阅读(3420) 评论(0) 推荐(0) 编辑
  2017年5月30日
摘要: 在上一节中我们介绍了多线程OpenGL绘制方案,但是如果需要在Java线程不断修改纹理数据,会由于并发访问导致Unity线程出现访问非法内存而崩溃。因此,考虑在Java线程加载数据,然后在unity线程调用OpenGL操作更新纹理。这样所有的OpenGL操作都在Unity绘制线程完成,从而避免了多线 阅读全文
posted @ 2017-05-30 12:18 游不动の鱼 阅读(2169) 评论(1) 推荐(0) 编辑
  2017年5月25日
摘要: 为了在Java线程进行OpenGL调用,需要为java线程初始化OpenGL环境,initOpenGL函数展示了初始化OpenGL环境的过程。在setupOpenGL方法中,在线程上先执行该调用即可。Java代码示例如下: 初始化完OpenGL环境之后,就可以在Java线程中愉快地进行OpenGL调 阅读全文
posted @ 2017-05-25 10:48 游不动の鱼 阅读(7427) 评论(0) 推荐(0) 编辑
  2017年5月23日
摘要: 最近在研究Unity3D开发中使用Java Plugin进行纹理更新,想法很简单,在Java线程更新纹理数据,然后Unity场景中的纹理将自动更新。 首先,创建Java类,定义创建纹理及获取纹理参数的接口,并创建单线程池用于进行加载Bitmap并绑定纹理数据等OpenGL操作。Java代码示例: 然 阅读全文
posted @ 2017-05-23 11:41 游不动の鱼 阅读(2684) 评论(0) 推荐(0) 编辑
  2015年5月19日
摘要: 1. 意图 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。2. 结构 此模式的结构如下图所示。 3. 参与者Builder-- 为创建一个Product对象的各个部件指定抽象接口。ConcreteBuilder-- 实现Builder的接口以构造和装配该产品的各个部... 阅读全文
posted @ 2015-05-19 19:25 游不动の鱼 阅读(220) 评论(0) 推荐(0) 编辑
  2015年5月17日
摘要: 1. 意图 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。2. 结构 此模式的结构如下图所示。 3. 参与者AbstractFactory-- 声明一个创建抽象产品对象的操作接口。ConcreteFactory-- 实现创建具体产品对象的操作。AbstractProduc... 阅读全文
posted @ 2015-05-17 20:44 游不动の鱼 阅读(217) 评论(0) 推荐(0) 编辑
  2015年2月3日
摘要: 为简单起见,此处只保留了关键代码。详细过程参见官方教程:Adding Action Buttons在AndroidManifest.xml文件中,我们有如下代码: ... 阅读全文
posted @ 2015-02-03 22:15 游不动の鱼 阅读(188) 评论(0) 推荐(0) 编辑
  2015年1月30日
摘要: 为简单起见,此处只保留了关键代码。详细过程参见官方教程:Starting Another Activity在MainActivity类中,我们有如下代码:public final static String EXTRA_MESSAGE = "com.example.simon.myapplicati... 阅读全文
posted @ 2015-01-30 22:07 游不动の鱼 阅读(177) 评论(0) 推荐(0) 编辑