我最近在开发一个面向企业内部app的语音SDK,在和思必驰的基础SDK集成的过程中发现,思必驰提供的sdk 是AAR文件,而我需要输出的也是aar,这时候发现思必驰的aar是没有办法打包到我的aar中的(调用方会找不到那个aar),试了通用的方法,比如
flatDir { dirs 'libs' }
还是不能解决,最终想到的由第三方服务商解决办法有两个:
做一个有趣的人
我最近在开发一个面向企业内部app的语音SDK,在和思必驰的基础SDK集成的过程中发现,思必驰提供的sdk 是AAR文件,而我需要输出的也是aar,这时候发现思必驰的aar是没有办法打包到我的aar中的(调用方会找不到那个aar),试了通用的方法,比如
flatDir { dirs 'libs' }
还是不能解决,最终想到的由第三方服务商解决办法有两个:
在我们下载一些文件的时候,有时候为了防止篡改,需要校验一下hash是否一致用于判断下载的文件完整性,判断两个文件是否一致,通用的做法就是校验文件的md5或hash。下面列出了常见的方法,主要基于命令行
前一阵子做一个demo,想从底部弹出一个类似于dialog的布局,但是发现无论怎么发现两边都有一定留白(在android 8.1系统)搜索了一些资料,填埋了这个坑。
setStyle(DialogFragment.STYLE_NO_TITLE, R.style.Theme_Dialog) val window = dialog.window window.setGravity(Gravity.BOTTOM) //可设置dialog的位置 window.decorView.setPadding(0, 0, 0, 0) window.setBackgroundDrawable(ColorDrawable(Color.WHITE));//这句话还不能少 日了狗 val lp = window.attributes lp.width = WindowManager.LayoutParams.MATCH_PARENT //设置宽度充满屏幕 lp.height = WindowManager.LayoutParams.WRAP_CONTENT window.attributes = lp window.attributes.windowAnimations = R.style.DialogAnimation
Q:你学的是java?
A:是的。大学学过。
Q: 那你说说java的关键字volatile
A: (心想:双重锁,单例模式,volatile。。。)volatile是用来防止指令重排和保证内存可见。
Q: 它的原理呢?
A:(TMD原理,肯定就是和虚拟机有关啦NND)只知道用,没有研究过这个。
Q:好吧,你还有什么要问的嘛?
A:你们这个岗位期待招聘什么样的人?
Q:嗯,高级一点的吧。
A:哦。没有了。
Q:那 回去等消息吧。
还原一下最近的一番对话,不过我实在是没记得当初java课上有讲过这个,知道指令重排和内存可见还是从某篇博客上看到的,也没有想过原理和为什么要这么做。那今天抽空理一理这个。现在想想应该是想通过其了解jvm相关的东西吧。
Continue reading “volatile 是个嘛?”
JVM垃圾回收机制 会对没有引用的对象进行回收,而持有引用的对象是不能被回收的。
匿名内部类包含如下特征
1. new 操作符
2. 实现一个接口,或者继承自一个类
3. 有构造函数的调用,接口因为没有构造函数,默认是无参构造函数。
4. 拥有body,就像类定义一样,body内可以声明方法,但是 不能拓展构造函数。
匿名内部内可以直接访问本地类的成员变量。可访问 方法内通过final 修饰的本地变量。
因此常见的泄漏就是匿名内部类存在对act的引用。
private Object obj=new Object(){ @Override public String toString() { return super.toString()+"bbb"; } };Continue reading “Android 中的内存泄漏”