Android
文章平均质量分 55
iamzhaozheng
这个作者很懒,什么都没留下…
展开
-
NDK编译的so文件armeabi和armeabi-v7a
问:编译时候生成多个.so文件,有时会在armeabi和armeabi-v7a中分别放置一份,为什么? 答:该设置一般能在jni下的Application.mk中或Android.mk中找到。这个需要看你的Native Code要做什么事情,armeabi是指的该so库用于Arm的通用CPU,而v7a的CPU支持硬件浮点运算。因此armeabi通用性强,但速度慢,而v7a能充分发挥v7a ...原创 2012-04-24 10:41:56 · 1305 阅读 · 0 评论 -
Native Code崩溃了?是libskia?onPause之后?Bitmap.recycle()线程不安全
有一处很奇怪的Crash,在退出一个Activity的时候Native Code Crash,而且是概率性发生。堆栈中的信息包含libskia.so。经过仔细排查,发现Google Code中有人提到类似问题,是libskia的库负责图像编解码等,而这个库不是线程安全的,那么在对Bitmap调用recycle方法时,可能造成线程崩溃,所以recycle要慎用。...2013-05-27 15:10:21 · 303 阅读 · 0 评论 -
AsyncTask的版本兼容性与target sdk version
最近发现了一个奇怪的问题,一处很久前写的代码,通过AsyncTask的doInBackground进行后台处理,突然间不管用了,就是说doInBackground没有被执行。同事查询SVN,发现相关代码没有过任何更改,经过很久的检查,发现只有在Manifest中有一处很小的改动,就是添加了targetSDKVersion。将这个属性去掉,就没有问题了。 通过对源码和google grou...2013-05-29 14:52:18 · 154 阅读 · 0 评论 -
小米1S不支持GLSL中的#define
直接native层crash,DAMN........解决方式:去掉所有的#define,常量改为const,其他改为函数。2013-12-05 18:27:45 · 264 阅读 · 0 评论 -
Avtivity的clearTaskOnLaunch属性与startActivityForResult冲突
clearTaskOnLaunch属性能够让我们在打开应用图标的时候进入固定的页面,而从任务管理器中打开则为当时退到后台的页面。 这么说吧:打开应用进入Activity A,然后再打开Activity B,按Home键回到桌面。这时候,如果点击桌面图标,正常情况则回到Activity B。但是如果你加了这个属性clearTaskOnLaunch,则会开启Activity A,而从任务管...原创 2013-12-05 18:39:41 · 151 阅读 · 0 评论 -
AbsListView的Header不能直接固定大小为0
直接上代码:LinearLayout mLayout = new LinearLayout(this);LayoutInflater.from(this).inflate(R.layout.header, mLayout, true);mListView.addHeaderView(mLayout); 如果设置(在Layout画出来之后):LayoutParams...2015-02-19 17:48:03 · 153 阅读 · 0 评论 -
GLSL慎用define的反斜线换行
三星的note的OpenGL编译器竟然不支持#define的反斜线换行2013-11-01 18:15:09 · 229 阅读 · 0 评论 -
Android的Fragment中onActivityResult不被调用的终极解决方案
Fragment中的onActivityResult不被调用,有几种情况,请大家一一排查。 1.检查该Fragment所属的Activity中,是否重写了onActivityResult方法。如果是该种情况,请确保写了super.onActivityResult: @Override protected void onActivityResult(int requestCod...2015-05-04 22:52:42 · 725 阅读 · 0 评论 -
Android中图片资源文件找不到的问题
最近每天被Google坑,整个人也是不太好。。。你们遇到过这样恶心的Log吗?这个.9的资源文件明明就在那里,却说不在。仔细研究,发现竟然是downsampling的时候出了问题。 放在高dpi目录中的图片资源文件,在低dpi手机上使用的时候,会自动进行缩小。如果你放在高dpi目录(比如drawable-xxhdpi)中的图片尺寸太小,那么大小就可能会被缩小为0,出现了这个问题。...原创 2015-05-05 13:59:16 · 1090 阅读 · 0 评论 -
Android内存泄漏查找(2)
(2)内存泄漏:多线程 在非UI线程(Worker Thread)中有时会用到this.wait()方法让线程进入等待状态。此时,如果Activity退出没有干涉它,那么该线程将一直处于等待状态,线程持有的对象将无法回收。所以,在Activity退出时,要notify等待的worker线程。如果线程中有长时间循环的话,要通过标志位等方法将循环结束。...原创 2012-07-17 16:48:58 · 130 阅读 · 0 评论 -
Android内存泄漏查找(1)
一、常见的内存泄漏对于较大规模的Android应用开发,内存泄漏是个让人十分头痛的问题。一般来说,Android使用Java语言进行开发,通过GC进行内存回收。如果对象处于被引用的状态,那么GC是无法回收的。尤其是Android中Activity的Context,很容易在不易察觉的情况下被引用。Activity关闭的时候,引用该Context的对象还在使用中,致使Activity无...2012-07-16 17:27:04 · 118 阅读 · 0 评论 -
Android通过ViewPager实现左右滑动切换图片
想开发像人人网相册打开单张图片时候能左右滑动切换图片的效果,开始通过FlipperView实现,不能跟手拖动,效果不好,而且需要自己写很多代码来控制FlipperView中的View。后来发现Android 3.0之后的SDK中提供了android-support-v4包用以实现版本兼容,让老版本系统下的应用通过加入jar包实现扩展,得到新版的各种技术优势,例如Fragment等。 Vie...2012-01-13 11:25:45 · 838 阅读 · 0 评论 -
解决Android下ViewPager和PagerAdapter中调用notifyDataSetChanged失效问题
Google在Android 3.0SDK中推出的ViewPager控件很大程度上满足了开发者开发页面左右移动切换的功能,使用非常方便,参见:http://jameszhao84.iteye.com/blog/1344584。但是使用中发现,在删除或者修改数据的时候,PagerAdapter无法像BaseAdapter那样仅通过notifyDataSetChanged方法通知刷新View。...2012-05-08 11:50:04 · 384 阅读 · 0 评论 -
Android下使用OpenCV
OpenCV是非常强大的图像处理开源库,很强大的支持图像和视频的采集、处理等。最近发布的2.4版本对Android和iOS的支持更加强大,使开发者能够很轻易的在移动设备上开发图像处理相关应用。1.下载Android专用OpenCV包,下载链接。解压缩。2.Import解压缩的OpenCV目录(都已配置好,不用New),选择Existing Projects into Workspace...原创 2012-05-29 16:26:17 · 178 阅读 · 0 评论 -
Android下native code(C++)的编译,NDK的使用
NDK能够让开发者在Android SDK的开发环境下进行native code的编译(即在Android中使用C++的代码)。Windows下Android新版本的NDK使用非常便捷,不需要安装任何Cygwin之类的Linux环境工工具。 配置NDK开发环境:1 确保已经安装好Android SDK和配置好开发环境。2 下载Windows版本NDK,链接:http://dl....2012-02-03 13:49:21 · 265 阅读 · 0 评论 -
Android下的横向ListView源代码下载
Android中,默认ListView都是纵向拖动的,横向拖动常用的有两种方式:1.使用Gallery控件,但该控件限制较多,很多时候难以满足我们的要求。比如:用该控件选中其中一项时,该项会自动居中,这样的功能有时是不需要的。因此,该控件灵活性很小。2.使用HorizentalScrollView,该控件可以支持横向滑动,但是并非使用AdapterView实现,不能管理内存。因此在内容较大...2012-02-06 16:45:30 · 113 阅读 · 0 评论 -
图片说明Andorid中ImageView的不同属性ScaleType的区别
ImageView是Android中的基础图片显示控件,该控件有个重要的属性是ScaleType,该属性用以表示显示图片的方式,共有8种取值ScaleType.CENTER, ScaleType.CENTER_CROP, ScaleType.CENTER_INSIDE, ScaleType.FIT_CENTER, ScaleType.FIT_END, ScaleType.FIT_START, S...2012-02-08 12:59:24 · 131 阅读 · 0 评论 -
Android中自定义View的MeasureSpec使用
有时,Android系统控件无法满足我们的需求,因此有必要自定义View。具体方法参见官方开发文档:http://developer.android.com/guide/topics/ui/custom-components.html一般来说,自定义控件都会去重写View的onMeasure方法,因为该方法指定该控件在屏幕上的大小。protected void onMeasure (i...2012-02-14 12:13:03 · 172 阅读 · 0 评论 -
Android中编写Activity单元测试程序提高开发效率
Android开发中,大型工程往往存在很多的Activity,这些Activity互相关联,复杂度较高。我们在开发时需要经常对界面以及交互等进行测试,每次测试运行程序后,往往需要一层一层的进入我们想看的Activity才能测试。这个过程中,可能需要输入用户名和密码,或者需要从Gallery中选择一幅图片等。因此,大型工程的每次测试都需要较长的时间,导致开发效率降低。针对这种情况,我们可以只打开某个...2012-02-20 16:47:24 · 153 阅读 · 0 评论 -
Android部分手机上canvas size不正确的问题
今天发现一些手机上重写onDraw之后,获取到canvas的width和height不正确导致绘图出问题。这里还是用View的getWidth和getHeight更靠谱一些。2015-05-12 22:23:46 · 254 阅读 · 0 评论