android
文章平均质量分 92
大雀儿飞飞
这个作者很懒,什么都没留下…
展开
-
JDK+Eclipse环境搭建
<!--@page {margin:2cm}h1 {margin-top:0.6cm; margin-bottom:0.58cm; line-height:241%}h1.western {font-family:"DejaVu Serif",serif; font-size:22pt}h1.cjk {font-family:"DejaVu Sans";原创 2012-03-30 09:33:49 · 2557 阅读 · 0 评论 -
使用Android Studio进行本地单元测试(Local Unit Tests)
使用Android Studio进行本地单元测试(Local Unit Tests)由于目前Google已经停止了对Eclipse ADT插件的更新,因此迫使Android的开发者迁移到Android Studio中。Android Studio基于JetBrains IntelliJ IDEA,后者号称世界上最聪明最好用的Java开发IDE。虽然Android Studio提供了很多选项可以为Ec原创 2015-09-19 22:20:04 · 4658 阅读 · 0 评论 -
利用MAT进行内存泄漏分析
前言 对于程序员来说码代码容易,保证代码的稳定性很难。有时候写完一个功能可能只需要一天时间,但是这个功能隐藏的bug导致的线上问题排查可能需要一周或者更长时间。因此,拥有良好的代码结构和编码规范是一个程序员应该长期坚持并为之奋斗的一个目标。但是,百密也难免一疏,没有百分之百没有问题的代码,在产品上线前,我们需要对自己的代码进行充分的自测,发现问题解决问题,保证自己产品的稳定性并减少对用户的原创 2015-12-13 23:31:40 · 38796 阅读 · 6 评论 -
Android ANR分析
前言 ANR即Application Not Responding,顾名思义就是应用程序无响应。在Android中,一般情况下,四大组件均是工作在主线程中的,Android中的Activity Manager和Window Manager会随时监控应用程序的响应情况,如果因为一些耗时操作(网络请求或者IO操作)造成主线程阻塞一定时间(例如造成5s内不能响应用户事件或者BroadcastRe原创 2015-11-28 21:42:48 · 45626 阅读 · 14 评论 -
在MAC OS下面编译flatBuffers的flatc文件
最近在研究google的flatbuffers,因此涉及到使用flatc来讲IDL描述的数据结构编译成flatbuffers能够使用的fbs结构的文件。由于是在MAC OS下面,因此最初尝试使用XCode来编译,但是这个玩意儿特别大,足足有4G+,而且苹果也特别操蛋,在中国没有服务器,因此下载不仅特别慢而且还很容易失败,因此果断放弃而采用cmake来进行编译。原创 2016-02-20 22:04:07 · 3920 阅读 · 4 评论 -
android FlatBuffers剖析
android FlatBuffers简介概述FlatBuffers是google最新针对游戏开发退出的高性能的跨平台序列化工具,目前已经支持C++, C#, Go, Java, JavaScript, PHP, and Python (C和Ruby正在支持中),相对于json和Protocol Buffers,FlatBuffers在序列化和反序列化方面表现更为优异,而且需要的资源更少,更适合大部原创 2016-03-13 21:04:05 · 4721 阅读 · 1 评论 -
Linux下解决no jdk found问题
Linux下解决no jdk found问题最近准备在Ubuntu下面搭建Android开发环境,将官方下载的内容解压后,为了能够在dash中方便地搜索,因此又在/usr/share/applications目录下面创建了Android Studio的快捷方式。但是遇到一个奇葩的问题就是:直接在shell中执行studio.sh,能够启动Android Studio。但是通过快捷方式点击打开后提原创 2016-06-15 23:02:01 · 6207 阅读 · 1 评论 -
Glide源码分析(一)——DiskLruCache磁盘缓存的实现
Glide源码分析(一)——DiskLruCache磁盘缓存的实现Glide磁盘的实现主要是通过DiskLruCache来实现的。DiskLruCache并非针对Glide编写的,而是一个通用的磁盘缓存实现,虽然并非Google官方的代码,但是已经在很多应用中得到了引入使用。journal日志DiskLruCache通过日志来辅助保证磁盘缓存的有效性。在应用程序运行阶段,可以通过内存数据来保证缓存的原创 2017-03-23 19:02:13 · 2314 阅读 · 0 评论 -
Glide源码分析(二)——磁盘缓存实现
Glide中默认磁盘缓存实现的入口为DiskLruCacheFactory,DiskLruCacheFactory提供了几个接收不同参数的构造函数,以允许指定缓存文件的位置和磁盘缓存的大小。其中比较有意思的是,在构造函数中DiskLruCacheFactory并没有立即构建缓存的File,而是在build函数执行的时候才开始构建缓存File,这算是懒加载的一种吧,即在真正需要使用到缓存的时候才去申请原创 2017-03-23 19:06:55 · 1256 阅读 · 0 评论 -
Glide源码分析(三)——图片缓存相关实现
LruBitmapPoolGlide实现bitmap缓存的实现类。其缓存功能实现的核心依赖于两个类:SizeConfigStrategy和AttributeStrategy,在API 19之前,使用AttributeStrategy,之后使用SizeConfigStrategy。两种strategy在缓存的功能实现上是一致的,SizeConfigStrategy只是在获取缓存的时候,不严格要求缓存中原创 2017-03-23 19:14:01 · 1284 阅读 · 0 评论 -
Glide源码分析(四)——Registry机制
Registry是Glide内部实现的模块挂接中心,它建立了功能需求和实现模块之间的映射关系,使这些模块能够根据需求进行灵活的挂载,模块和模块之间又相互独立互不影响,很好地实现了系统功能的解耦。 在Registry内部,提供了对如下几种类型模块的挂载支持:/** * 数据加载模块 */private final ModelLoaderRegistry modelLoaderRegistry;原创 2017-03-23 19:16:00 · 1565 阅读 · 0 评论 -
Glide源码分析(五)——ModelLoader机制
ModelLoaderRegistryModelLoaderFactory和MultiModelLoaderFactoryModelLoaderFactory是一个工厂类接口,实现类使用它的接口来对外构建不同了类型的modelLoader,它的实现类一般是不同类型的ModelLoader的内部类,例如ByteArrayLoader内部就实现了两个ModelLoaderFactory,分别生成能够将b原创 2017-03-23 19:17:29 · 3056 阅读 · 0 评论 -
android content provider java.lang.SecurityException: Permission Denial异常解决
一般情况下,出现这个异常都是因为调用者没有在manifest中声明content provider说需要的read或者write权限导致的。例如,content provider的声明为(注意exported属性为true其他程序才能获取到provider的数据):<provider android:name="com.xxx.xxx.Provider" andro原创 2015-11-05 13:17:33 · 1329 阅读 · 0 评论 -
Android 视差滚动控件
今天看到一个视差滚动控件,觉得挺好的,于是自己动手写了一个。原创 2014-09-25 21:18:30 · 6152 阅读 · 0 评论 -
ubuntu12.10下下载android源码
最近折腾了一阵android源码下载的问题,在网上找了一些教程照着做,出现了各种问题,归根结底就是因为一些网址被墙了,但是很多教程又没有更新,所以出现了下载中出现的各种问题。强烈建议去http://source.android.com/source/downloading.html#initializing-a-repo-client参考google给出的教程,我最后就是照着这个做下载成功原创 2013-11-02 17:46:30 · 3553 阅读 · 0 评论 -
Linux下NDK的安装配置
Linux下NDK的安装配置 在编写android程序的时候如果需要复用一部分以前的c语言程序,可以考虑使用NDK。由于设计到c和c++编程,故强烈建议在Linux下安装上eclipse的CDT插件。安装方法同安装其他插件的方式一样,推荐离线安装,方法这里不再赘述。 在使用NDK之前需要下载android-ndk包,下载解压后将解压后的文件夹拷贝到自定义的目录下面(如“/roo原创 2012-04-05 16:35:40 · 28191 阅读 · 1 评论 -
android模拟器(AVD)不能使用键盘的问题解决
最近将android sdk升级到最新的时候出现了模拟器不能使用键盘的问题,查找资料解决方法如下:在eclipse当中window->AVD Manager,选中你要修改的模拟器,点击edit,然后在Hardware部分选择new,添加keyboard support,同时将添加的这一项的value改为true,这样重启你的模拟器,你的模拟器就可以使用键盘了。原创 2012-07-06 16:17:50 · 16923 阅读 · 4 评论 -
解决导入android工程后main.xml Graphical Layout不能正常显示的问题
最近导入在Linux下做的一个工程到windows平台出现了原本在main.xml下的布局看不到的问题,试了一下,同时main.xml的代码还是正常的,将工程放到AVD当中运行界面也显示正常。针对这种情况,捣鼓了一下,原来是我在import工程的时候没有选择“copy projects into workspace”,导致最后的工程没有在eclipse的workspace当中,所以出现这种现象,具原创 2012-07-01 10:03:53 · 5164 阅读 · 3 评论 -
创建TabHost的两种方式的简单分析
最近做了一个TabHost的界面,在做的过程中发现了一些问题,故和大家分享一下。首先我的界面如下:目前就我所知,创建TabHost有两种方式,第一种是继承TabActivity类,然后用getTabHost方法来得到一个TabHost的实例,然后就可以给这个TabHost添加Tab了。示例代码如下:public class PlotHost extends TabActivit原创 2012-07-12 15:13:30 · 5650 阅读 · 0 评论 -
ActivityGroup获取其中一个Activity的方法
我是用继承ActivityGroup的方法来做了一个TabHost,其中有两个Tab,我的目的是通过修改ActivityGroup对应的自定义菜单来修改其中一个Tab的布局。之前通过tabhost.getTabWidget().getChildAt(index);的方法来获取某个Tab的View,经过调试,可以得到这个view,但是我却不能通过这个view来获取这个Tab对应的布局当中的组原创 2012-07-16 08:58:35 · 3807 阅读 · 0 评论 -
Android中GridView水平滚动和垂直滚动的实现(动态)
经过本人实验,完美实现水平滚动和垂直滚动。话不多说,先看布局文件:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:原创 2012-07-19 22:00:26 · 33442 阅读 · 9 评论 -
离线安装ADT+AVD
离线安装ADT+AVD一 eclipse安装ADT插件 从网上下载的eclipse默认没有ADT插件,如果需要开发android程序,则需要自己安装这个插件。最简单的方法是在eclipse当中选择“help-->install new software“,在出现的”work with“窗口中输入:http://dl-ssl.google.com/Android/eclipse即可。但原创 2012-04-05 16:31:05 · 9390 阅读 · 0 评论 -
android ContextMenu不出现的原因
想必android中的ContextMenu大家都很熟悉了,这段时间我在activity当中为一个组件注册了contextMenu后发现长按这个组件ContextMenu就是不出来。因为ContextMenu的原理就相当于当我们出发了这个组件的longClick事件后为我们生成一个菜单。是不是我这个组件的longClick事件一直没有被触发? 简单分析过后我突然想起,我重写了我原创 2012-08-24 08:33:53 · 3094 阅读 · 1 评论 -
android 使用Canvas画箭头
画箭头这个东西太麻烦啦,开始想用把箭头画好,然后到指定点旋转的方法,但是,效果一直不好。想用数学的方法来画,但是发现计算很复杂啊。于是google,发现一个兄台使用了java当中的awt实现了画箭头(http://www.bangchui.org/simple/?t16755.html),于是就借过来,改了一下,结果真能用。成果不敢独占,在此拿来给大家分享:public class MyCan原创 2012-10-18 10:38:24 · 15451 阅读 · 7 评论 -
java.lang.verifyerror问题解决
在android下需要用jxl对excel文件进行读写,之前是直接将jxl.jar包拷贝到工程目录下,然后使用“Build path-->add to build path”来将这个包添加到工程的库当中,结果却老是在实例化类的时候出现java.lang.verifyerror,百思不得其解,在网上查了,说是可能由于导入外部包的时候出现错误,于是将jxl.jar直接拖到工程的lib文件夹下,结果通过原创 2013-03-01 18:51:42 · 3285 阅读 · 0 评论 -
android shell 内,sh:cp not found 解决方法
使用mv命令对于只读文件是不可行的,如果你是要将文件在pc机和你的android目标机之间进行传输最简单的方法是使用pull或者push,如果你是在你android目标机内部的不同文件夹下进行文件复制,最简单的方法是使用cat > ,其中代表你要拷贝的文件,表示你需要拷贝到的地方。例如"cat test.txt > /sdcard/test.txt “ 可以将当前文件夹下的test.txt拷贝至原创 2013-03-27 09:59:26 · 6501 阅读 · 0 评论 -
Glide源码分析(六)——从DecodeJob相关实现看图片加载流程
DecodeJob是集数据加载、解析和回调通知于一体的包装内,它在内部根据配置的不同情况将相关的工作委托给不同的类来实现,是Glide内实现数据加载功能的中枢。首先来看其中会用到的几个比较重要的类。LocalPath和DecodePathDecodePath内部保存有两个主要的成员,一个是由ResourceDecoder组成的解码器集合,用来从指定的数据源中解码数据;另一个是ResourceTran原创 2017-03-23 19:19:06 · 965 阅读 · 1 评论