- 博客(11)
- 收藏
- 关注
原创 JNI的一些最佳实践(四)观察者模式
观察者模式是一种设计模式,用于定义对象之间的一对多依赖关系,使得当一个对象的状态发生变化时,所有依赖它的对象都会得到通知并自动更新。这种模式包括主题(Subject)和观察者(Observer)两个角色,主题负责维护一组观察者,并在状态变化时通知它们。观察者模式有助于对象之间的解耦合,使得它们可以更灵活地交互。在 Android 或者 C++ 开发当中,我们经常会使用到这种设计模式,用于发布订阅消息。// 主题接口// 观察者接口// 具体主题@Override@Override。
2024-01-02 11:25:59 862
原创 JNI的一些最佳实践(三)Java、C++ 对象引用
在使用 JNI 开发时,我们肯定会有这样的需求:在 C++ 代码中创建并维护一个 Java 对象,并在合适的时机调用 Java 对象的函数,实现某些逻辑;或者在 Java 代码中创建一个 C++ 对象,调用对应的函数。但由于 C++ / Java 之间并不能直接相互调用,所以需要引用和指针的机制来实现需求。
2024-01-02 11:16:15 399
原创 JNI的一些最佳实践(二)异常处理
当在 JNI 中调用有可能抛出异常的 Java 函数时,一定要使用和函数先检查、清空异常后再调用其他 JNI 函数,否则会引发崩溃。在处理 JNI 层抛出的异常时,我们首先需要通过 try catch 先捕获这个异常,然后再通过 JNI 的ThrowNew函数重新抛出一个能够被 Java 层捕获的异常。ExceptionOccurred:检查是否发生了异常,若用异常返回该异常的引用,否则返回NULL。ExceptionDescribe:打印异常的堆栈信息。
2024-01-02 11:13:08 905
原创 JNI 的一些最佳实践(一)方法注册
在这篇文章中,参考 chromium 和 Android 源码中 native 方法注册的最佳实践,对静态注册、动态注册两种方式进行了对比。
2024-01-02 11:08:43 904
原创 Android随笔4:观察者模式
Android随笔4:观察者模式1. 概念1.1 什么是观察者模式1.2 现实中的例子1.3 UML类图2. 项目中的应用:网络切换2.1 不使用观察者模式2.2 使用观察者模式3. 总结1. 概念1.1 什么是观察者模式定义一个被观察者和一组观察者,观察者观察被观察者(订阅或者说是监听关系)。每当被观察者发生改变,会通知所有观察者,观察者收到通知可以做出对应的处理。1.2 现实中的例子其实现实生活当中有很多这样的例子,比如说直播订阅。看过斗鱼、虎牙直播的朋友肯定知道,很多主播在直播的时候都会吆喝
2020-07-23 23:13:02 141
原创 OkHttp中的设计模式之一:Builder模式
OkHttp中的设计模式之一:Builder模式1. 什么是Builder模式2. OkHttp中的实例2.1 OkHttpClient的构建方式2.1 OkHttpClient中的Builder2.1.1 通过Builder构建一个OkHttpClient2.1.2 默认的Builder2.1.3 反构建Builder3. Builder插件1. 什么是Builder模式关于什么是builder模式,具体可以参考一下这篇文章。Builder模式分为:经典builder模式和变种builder模式。而
2020-07-19 22:24:24 1544
原创 Android随笔3:多行RadioGroup
一、简介在开发某APP时,遇到这么一个问题:要使用RadioGroup来实现单选框效果,但是item太多,要分成两行来显示。一开始我心想,这不是很简单吗,在xml布局里设置RadioGroup的orientation值为vertical,然后把RadioButton给它一个一个摆上去不就完事儿咯~so easy的事情,万万没想到。。。。。。...
2019-05-14 15:01:53 1813 5
原创 Android随笔2:自定义Toast
一、简介toast是我们在网络请求失败或是用户信息填写不正确时用于提示的一种轻量级反馈。我们可以通过Toast.makeText(this, "这是一条Toast", Toast.LENGTH_SHORT).show();来弹出一条toast。效果如下图:但是有些时候,当我们需要改变toast的样式时,android自带的toast显然不能满足我们的要求,如居中显示。所以这时候,我们就...
2019-05-13 17:51:19 143
原创 Android随笔1:自定义圆形头像控件
一、简介因为项目需求,需要实现圆形头像框,在参考了鸿洋大神的http://blog.csdn.net/lmj623565791/article/details/41967509文章之后,通过BitmapShader实现了圆形头像框,下面是效果展示以及具体的实现过程。二、效果展示三、实现思路想要实现圆形头像框,有以下几个注意点:1.保持控件的宽高一致:因为是圆形头像框,所以需要强行设置控...
2019-05-13 16:30:24 557 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人