JNI之四:JNI函数(下)

相关链接:JNI函数(上)


对象操作


AllocObject

jobject AllocObject(JNIEnv *env, jclass clazz);

不调用构造函数的情况下,分配一个新的对象。返回对象引用。

注意:java语言规范,12.6.1 实现finalize:“在对象o上调用了Object的构造方法,且构造方法调用成功,否则对象o不可终结”。因为AllocObject()未调用构造方法,所以通过此函数创建的对象不符合终结机制(finalization),不会被终结。

clazz参数不可为数组class。

阅读更多

Retrofit+OkHttp+RxJava运行时修改POST请求的URL

在使用Retrofit时,如果我们想变更某个请求的URL,GET请求的话,可以使用@Url 注解,但如果是POST请求,是不能直接这么干的。

我的做法是在Retrofit.create(XXXX.class)之前,给OkHttp添加拦截器,拦截器识别请求header中是否带着我们预先自定义的参数。在请求发起时header中增加key:NEW_HOST_URL,value为将于替换的新地址。

拦截器的代码如下:

阅读更多

在Java代码中移除ConstraintLayout的layout_constraintHeight_percent或layout_constraintWidth_percent属性

有写场景需要在Java代码中移除xml中配置的百分比属性,如:

app:layout_constraintHeight_percent="0.3"
app:layout_constraintWidth_percent="0.722"

在Java中移除以百分比属性的具体操作:

if (lp instanceof ConstraintLayout.LayoutParams) {
    ((ConstraintLayout.LayoutParams) lp).matchConstraintPercentHeight = 1f;
    ((ConstraintLayout.LayoutParams) lp).matchConstraintDefaultHeight = 0;/*spread 默认的,非percent*/
}
阅读更多

JNI之四:JNI函数(上)

本文作为JNI函数参考,列出了完整的JNI函数,并呈现了JNI函数表的布局。

注意,属于“必须(must)”用于描述对于JNI程序员的限制。例如,当你遇到一些JNI函数必须接受一个非空对象时,你的责任就是确保不会传一个空对象到JNI函数。因此JNI实现不必在JNI函数中做空指针检查。明确不允许的情况下传入空,将引起未捕获异常或奔溃。

阅读更多

Android布局切圆角

通常,要想使布局文件以圆角方式显示,最简便的方式是通过CardView进行包装。但是CardView设置圆角后四个角都是同样的弧度,有时候我们接到的需求是指给其中某些角指定圆角,或者给每个角指定不同的弧度,CardView就无法满足了。

阅读更多

RecyclerView限制最大高度或宽度

在日常开发中,想直接通过android:maxHeightandroid:maxWidth在布局文件中限制RecyclerView的最大高度宽度,是无法实现的。通过自定义RecyclerView,覆盖onMeasure方法。在onMeasure方法内部,当发现自身高度或宽度超过限制的最大高度或宽度,则手动将宽或高设置为期望的最大宽或搞。具体代码实现如下:

阅读更多