android
文章平均质量分 68
aa112901a
这个作者很懒,什么都没留下…
展开
-
模型资源加载引起的内存对齐问题
原先以为是模型解析的时候,模型里的数据类型不确定,可能是void* 也可能是float*等等,导致赋值的时候有问题,可后来想想模型的制定应该没这么蠢吧,so继续追踪下去,打印所有解析的模型资源数据,发现都是4字节倍数,那这很明显了啊,只要模型资源起始地址对齐的,那我们需要解析的数据肯定都是对齐的,打印了下模型资源地址果然是像0x0x5594bb4a7f 这样的,对,就是不对齐,为啥呢,再看下模型资源。重新申请个4的倍数的内存,这样会确保ptr 起始地址是4字节对齐的,给原来的值拷贝进去,ok。原创 2022-11-02 17:31:45 · 894 阅读 · 1 评论 -
requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
地址无关代码,在64位下编译动态库的时候,经常会遇到下面的错误/usr/bin/ld: /tmp/ccQ1dkqh.o: relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC提示说需要-fPIC编译,然后在链接动态库的...转载 2019-08-16 15:10:33 · 2552 阅读 · 0 评论 -
Android Anr 原理分析
最近做了ANR的一些研究,讲述自己对ANR流程的一些总结,本文主要从ANR流程上来看不分析细节,需要细节的推荐https://duanqz.github.io/2015-10-12-ANR-Analysis#213-input%E5%A4%84%E7%90%86%E8%B6%85%E6%97%B6非常全面.ANRgoogle官方有比较清楚的解释,同时指明了ANR发生在主线程,这也隐含表...原创 2019-07-07 15:10:52 · 475 阅读 · 0 评论 -
i2c-tools读写16位寄存器调试
最近在rk3399平台上更换调试了录音小板,原rk3399的es7243 修改新的adc小板,一开始硬件就有问题,但因为对硬件不熟悉,导致做了汗多无用功,言归正传,换adc录音小板,首先应该用i2ctools 检测寄存器硬件i2c ok的情况下能使用i2cdetect 能检测到设备,驱动里配置了地址就显示为UU,没有配置地址显示具体值,比如10 一般寄存器都...原创 2019-04-04 16:53:25 · 10682 阅读 · 3 评论 -
Textpaint.breakText() 测量返回值不正确的处理
最近在使用Textpaint.breakText()遇到返回值不正确的情况,在输入的字符中含有 "fi"会返回错误的行数,原因是"fi"对被当做一个符号来计算了,目前这个bug谷歌还没有解决这里提供两种方案来解决1.可以对输入的字符中的"fi"替换,用"_!"来替换"fi"用breakText计算出结果后再替换回"fi".2.使用measureText来替换br...原创 2019-04-04 17:09:30 · 1889 阅读 · 0 评论 -
关于Android的.so文件你所需要知道的
App中可能出错的地方处理.so文件时有一条简单却并不知名的重要法则。你应该尽可能的提供专为每个ABI优化过的.so文件,但要么全部支持,要么都不支持:你不应该混合着使用。你应该为每个ABI目录提供对应的.so文件。当一个应用安装在设备上,只有该设备支持的CPU架构对应的.so文件会被安装。在x86设备上,libs/x86目录中如果存在.so文件的话,会被安装,如果不存在,则会选择armea转载 2017-12-27 14:20:29 · 4460 阅读 · 0 评论 -
做异步的话需要关闭Handler吗?如何关闭?直接关闭线程不可以吗?
activity onDestory() 的时候调用 handler.removeCallbacksAndMessages(null);andler可以在任何有Looper的线程中创建,当然通过Handler提交的事务也是在对应的那个线程中执行的。所以,如果你的Handler是在子线程中创建的,退出字线程HandlerThread的Looper对象,不在操作Message转载 2017-01-23 10:34:26 · 1688 阅读 · 0 评论 -
android系统信息(内存、cpu、sd卡、电量、版本)获取
一、内存(ram):android的总内存大小信息存放在系统的/proc/meminfo文件里面,可以通过读取这个文件来获取这些信息:Java代码 public void getTotalMemory() {String str1 = "/proc/meminfo";String str2="";try {FileReader fr = new转载 2017-01-10 18:58:46 · 550 阅读 · 0 评论 -
关于使用AIDL出现空指针的解决办法
关于使用AIDL出现空指针的解决办法使用AIDL进行远程调用的时候出现的空指针异常,解决过程稍微有点小曲折。具体安下1.先贴异常信息1 ERROR/AndroidRuntime(9435): FATAL EXCEPTION: main2 ERROR/AndroidRuntime(9435): java.lang.NullPointerException3 ERR转载 2017-01-06 20:38:56 · 757 阅读 · 0 评论 -
用10进制小数不能精确表示某些三进制小数
用10进制小数不能精确表示某些三进制小数0.1(3)=0.33333333333……(10)同理,用二进制小数也不能精确表示某些10进制小数。C/C++ code?1234567891011121314151617转载 2016-12-14 12:27:30 · 688 阅读 · 0 评论 -
java 文件同步读写的几种方式
方案1:利用RandomAccessFile的文件操作选项s,s即表示同步锁方式写?1RandomAccessFile file = newRandomAccessFile(file, "rws");方案2:利用FileChannel的文件锁?转载 2016-12-13 15:23:50 · 5347 阅读 · 0 评论 -
硬件加速导致的自定义drawable的内存泄漏
最近做android 上图标矢量化工作,选取SVG格式做为矢量化方案,方法和微信开发SVG类似,最后转换SVG文件生成java代码drawable类,过程下次再说。android中读取java代码绘制记录,用canvas绘制。在这里遇到个问题,在用canvas绘制图片时,如果对同一个view绘制多次,会使native内存不断增长,native里内存不能释放,经过排查,最后发现是默认使用硬件加速导致的原创 2016-06-02 19:29:21 · 1596 阅读 · 1 评论