<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ZKhero的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ZKhero</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ZKhero]]></copyright><item><title><![CDATA[jni中的java接口使用]]></title><link>https://blog.youkuaiyun.com/ZKhero/article/details/108488802</link><guid>https://blog.youkuaiyun.com/ZKhero/article/details/108488802</guid><author>ZKhero</author><pubDate>Wed, 09 Sep 2020 14:20:01 +0800</pubDate><description><![CDATA[JNI中的java接口使用
项目需求，需要在c++函数中监听相应的状态，并在java端进行一些列的处理。
这个需要在JNI中写一个subscriber，注册后在需要的地方进行引入使用。
目录结构
初始化是AS上的c++工程文件，这边先暂时实现简单的demo，CdemoActivity是NativeActivity的实现，我们暂时别管，因为实现是c++层控制的，有兴趣可以去百度下

主要涉及jnicallback等c文件和JNIUtil这java文件
JNIUtil
public class JNIUtil ]]></description><category></category></item><item><title><![CDATA[openGL中GLSL语言介绍]]></title><link>https://blog.youkuaiyun.com/ZKhero/article/details/107730439</link><guid>https://blog.youkuaiyun.com/ZKhero/article/details/107730439</guid><author>ZKhero</author><pubDate>Sat, 01 Aug 2020 14:28:34 +0800</pubDate><description><![CDATA[GLSL 语言概念介绍
内容翻译至GLSLangSpec.1.20，已尽量通顺，随便看看吧
介绍


概述
用这种语言编写的独立编译单元称为着色器。一个程序是一组完整的着色器，它们被编译和链接在一起。本文档的目的是详细说明编程语言。用于操作和与程序和着色器通信的OpenGL入口点在一个单独的规范中定义。

错误处理

通常，编译器接受格式不良的程序，因为不可能检测到所有格式不良的程序。可移植性只保证了格式良好的程序，这是本规范所描述的。鼓励编译器检测格式不良的程序并发出诊断消息，但并不是所有情况下都必须这样]]></description><category></category></item><item><title><![CDATA[android内存泄漏记录]]></title><link>https://blog.youkuaiyun.com/ZKhero/article/details/107150905</link><guid>https://blog.youkuaiyun.com/ZKhero/article/details/107150905</guid><author>ZKhero</author><pubDate>Mon, 06 Jul 2020 10:02:53 +0800</pubDate><description><![CDATA[android内存泄漏点记录
常见的四种情况
1. 将context或者view置为static（view会默认持有一个context的引用，置为static的话会造成view在方法区中无法快速被回收，从而导致activity的泄漏）
public class TestActivity extends AppCompatActivity {

    private static ImageView imageView;

    @Override protected void onCreate(Bund]]></description><category></category></item><item><title><![CDATA[android线程池的封装工具类]]></title><link>https://blog.youkuaiyun.com/ZKhero/article/details/106547394</link><guid>https://blog.youkuaiyun.com/ZKhero/article/details/106547394</guid><author>ZKhero</author><pubDate>Thu, 04 Jun 2020 15:20:59 +0800</pubDate><description><![CDATA[整理下项目中遇到的轮子，后面做的时候直接方便移植


android线程池工具类


线程池工具类
​	主要用于后台服务中一直轮询的子线程，可以有效的管理线程的使用，再也不用new Thread().start()了
public class ThreadPoolManager
{
    private static final String TAG = "ThreadPoolManager";
    private ExecutorService mExecutorService; // 线程池对象
]]></description><category></category></item><item><title><![CDATA[android 加载 fragment 工具类]]></title><link>https://blog.youkuaiyun.com/ZKhero/article/details/105723179</link><guid>https://blog.youkuaiyun.com/ZKhero/article/details/105723179</guid><author>ZKhero</author><pubDate>Fri, 24 Apr 2020 09:06:23 +0800</pubDate><description><![CDATA[android 加载 fragment 工具类
不同项目直接拷贝，要求是support v4包下的fragment
/**
 * 加载fragment的工具类
 * 静态类方法
 */
public final class FragmentUtil {

    /**
     * 初始化fragment
     *
     * @param manager           fragme...]]></description><category></category></item><item><title><![CDATA[android轮子-----工具类]]></title><link>https://blog.youkuaiyun.com/ZKhero/article/details/105701254</link><guid>https://blog.youkuaiyun.com/ZKhero/article/details/105701254</guid><author>ZKhero</author><pubDate>Thu, 23 Apr 2020 10:25:54 +0800</pubDate><description><![CDATA[整理下项目中遇到的轮子，后面做的时候直接方便移植


android权限工具类


android拷贝assets目录到手机里工具方法


权限管理工具类
/**
 * 权限管理
 */
public class PermissionsUtils {

    private final int mRequestCode = 101;// 权限请求码

    /**
     * 是否需要去系统...]]></description><category></category></item><item><title><![CDATA[android Echart力图webview，包含双向交互内容]]></title><link>https://blog.youkuaiyun.com/ZKhero/article/details/105504182</link><guid>https://blog.youkuaiyun.com/ZKhero/article/details/105504182</guid><author>ZKhero</author><pubDate>Tue, 14 Apr 2020 08:52:36 +0800</pubDate><description><![CDATA[android Echart力图webview，包含双向交互内容
H5界面代码
&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
    &lt;title&gt;关系图&lt;/title&gt;
    &lt;script src="./jquery-3.4.1.min.js"&gt;&lt;/script&gt;
    &lt;script ...]]></description><category></category></item><item><title><![CDATA[jni接口参数整理]]></title><link>https://blog.youkuaiyun.com/ZKhero/article/details/105493629</link><guid>https://blog.youkuaiyun.com/ZKhero/article/details/105493629</guid><author>ZKhero</author><pubDate>Mon, 13 Apr 2020 17:36:10 +0800</pubDate><description><![CDATA[jni整理

方法命名规则


JNIEXPORT jstring JNICALL
Java_com_zkhero_jnitestdemo_JNIUtils_getTopicMsgFromJNI(JNIEnv *env, jclass clazz, jstring topic) ;
//JNIEXPORT和JNICALL分别用于在Windows下标明该函数导出在外部可以调用和用于约束函数入栈...]]></description><category></category></item><item><title><![CDATA[开发纪要-------相当于开发备忘录，持续更新]]></title><link>https://blog.youkuaiyun.com/ZKhero/article/details/103140375</link><guid>https://blog.youkuaiyun.com/ZKhero/article/details/103140375</guid><author>ZKhero</author><pubDate>Tue, 19 Nov 2019 13:33:52 +0800</pubDate><description><![CDATA[1. Rxjava的四种线程切换


Schedulers.io() : 代表io操作的线程, 通常用于网络,读写文件等io密集型的操作

Schedulers.computation(): 代表CPU计算密集型的操作, 例如需要大量计算的操作

Schedulers.newThread(): 代表一个常规的新线程

AndroidSchedulers.mainThread(): 代表Androi...]]></description><category></category></item><item><title><![CDATA[java常用类型大小]]></title><link>https://blog.youkuaiyun.com/ZKhero/article/details/103063752</link><guid>https://blog.youkuaiyun.com/ZKhero/article/details/103063752</guid><author>ZKhero</author><pubDate>Thu, 14 Nov 2019 11:03:14 +0800</pubDate><description><![CDATA[主类型
			大小
			最小值
			最大值
			封装器类型
		boolean
			1-bit
			–
			–
			Boolean
		char
			16-bit
			Unicode 0
			Unicode 216- 1
			Character
		byte
			8-bit
			-128
			+127
			Byte[1]
		short
			16-bit
			-2...]]></description><category></category></item><item><title><![CDATA[MVVM的使用之标签含义]]></title><link>https://blog.youkuaiyun.com/ZKhero/article/details/79704945</link><guid>https://blog.youkuaiyun.com/ZKhero/article/details/79704945</guid><author>ZKhero</author><pubDate>Mon, 26 Mar 2018 22:11:20 +0800</pubDate><description><![CDATA[继上一篇，mvvm的特性就是databinding，主要在xml中增加了一些标签，这些标签在使用中大大方便了开发，节省了项目中的代码量，减少冗余代码，但带来的负面的影响也是，就是不熟悉databinding时候入门，studio报BR找不到的错误，这个时候你去看日志在大多数情况下是看不出来的，这个时候就要在xml布局中增加的代码一一排查了，很烦。我就自己总结下，因为绝大数产生的问题的原因都是因为不...]]></description><category></category></item><item><title><![CDATA[MVVM的入门使用之含义了解]]></title><link>https://blog.youkuaiyun.com/ZKhero/article/details/79633382</link><guid>https://blog.youkuaiyun.com/ZKhero/article/details/79633382</guid><author>ZKhero</author><pubDate>Tue, 20 Mar 2018 23:16:18 +0800</pubDate><description><![CDATA[项目中要用到MVVM的框架了，平时又忙的没有时间，慢慢来积累下把，下篇写代码1. 与MVP框架类似，主要利用4个特性，数据绑定（Data Binding） 依赖属性（Depandency Property） 命令（Command） 路有事件（Routed Event）；M---数据Model； V---View对应的activity或者xml文件，主要是绘制和交互； VM---ViewModel，...]]></description><category></category></item><item><title><![CDATA[Android开发中处理内存泄露的常识建议]]></title><link>https://blog.youkuaiyun.com/ZKhero/article/details/79615883</link><guid>https://blog.youkuaiyun.com/ZKhero/article/details/79615883</guid><author>ZKhero</author><pubDate>Mon, 19 Mar 2018 19:17:30 +0800</pubDate><description><![CDATA[自己总结，了解运用即可1. 单例的使用，（主要原因是单例的静态特性），如果一个单例的传入的参数是当前的Activity，那么这个单例会被无限制的持有下去，常用的方法是用整个Application的context作为参数传入，这样就不会被Activity的生命周期所影响2. Handler，Message，MessageQueue是相互关联一起的，万一handler发送的message尚未被处理，则...]]></description><category></category></item><item><title><![CDATA[项目中遇到的BUG修改注意点]]></title><link>https://blog.youkuaiyun.com/ZKhero/article/details/79416585</link><guid>https://blog.youkuaiyun.com/ZKhero/article/details/79416585</guid><author>ZKhero</author><pubDate>Thu, 01 Mar 2018 20:04:29 +0800</pubDate><description><![CDATA[1.Activity中切换Fragment的正确方式是add()和hide()两个方法，add需要展示Fragment，hide当前展示Fragment，这样不会重复调用onCreateView的函数。2.Activity各个生命周期应该执行的事情    onCreate()：第一次实例化调用，执行一些静态的操作    onStart() ： Activity可见但没有获取到焦点。不能交互时调用 ...]]></description><category></category></item><item><title><![CDATA[Android的自定义View的入门到放弃]]></title><link>https://blog.youkuaiyun.com/ZKhero/article/details/79381086</link><guid>https://blog.youkuaiyun.com/ZKhero/article/details/79381086</guid><author>ZKhero</author><pubDate>Mon, 26 Feb 2018 21:24:24 +0800</pubDate><description><![CDATA[看到这个标题是不是很难受，哈哈，个人工作的项目中关于播放器动画的自定义View的代码多的一大堆，仿佛写这代码的开发跟我从事的不是同一个工作，里面基本上一行注释都没有，Duang Duang的写了十几个类，几万行代码，心里佩服，活了一大把年纪的，也是高人，但是写的代码看一眼都嫌难受。没办法，项目中要用到，更何况现在的我还是以UI为主的程序员，自定义View都不懂说出去都有点丢人，还是写点自己关于自定...]]></description><category></category></item><item><title><![CDATA[Android O 行为变更]]></title><link>https://blog.youkuaiyun.com/ZKhero/article/details/77918330</link><guid>https://blog.youkuaiyun.com/ZKhero/article/details/77918330</guid><author>ZKhero</author><pubDate>Sat, 09 Sep 2017 22:02:47 +0800</pubDate><description><![CDATA[最近项目要适配Android O，特地去官网上学习了下，得那个小本本记下来
针对所有的API级别的应用
这个就很好理解了，不管你项目中的应用是针对那个版本，都得要遵循现在O版本中的一些规则，没有特殊性，这样就要要求开发者着重注意了
 1. 网络连接和HTTPS连接
（1）无正文的OPTIONS请求具有Content-Length：0标头。（之前是没有的）请求这一块的需要注意
（2）Htt]]></description><category></category></item></channel></rss>