android
文章平均质量分 62
Cmdmac
技术爱好者
展开
-
android完全退出应用程序
最近开发的一个应用程序中,需要在两个activity之间来回切换,但又不想让这两个activity在切换时候重新创建,于是使用了android:launcher属性为singleInstance,这样切换不重新创建的目标达到了。但想在其中之一在按返回键的时候完全退出应用程序,google了下,说是使用// 关闭进程android.os.Process.killProcess(andr原创 2012-03-01 21:06:35 · 927 阅读 · 0 评论 -
使用AnnotationProcessor自动生成代码
在上一篇实现类spring框架的文章中,android基于注解实现类似spring服务端框架使用了注解实现了与web服务本身的解耦,但实现的方式是使用反射得到method对象然后在请求到来时实例化对象然后用反射调用对应的函数,这种方法有一定的性能的损耗,使用上不够极致,这里再用注解处理器的方法实现对注解自动生成代码,实现一样的功能.注解处理器的基础就不多介绍了,这里直接说说如何实现.第一步:将...原创 2018-10-25 13:45:51 · 2013 阅读 · 0 评论 -
android基于注解实现类似spring服务端框架
用过spring或Retrofit的人都知道实现函数和http请求的绑定和解耦非常方便,这里分享一下基于NanoHttpd实现的简单注解框架。第一步定义注解类://http控制类,被该注解的类用来处理http请求@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.TYPE)public @interface Controller ...原创 2018-10-21 21:57:00 · 847 阅读 · 0 评论 -
Android多语言适配繁体中文
Android多语言适配一般默认是values/drawable目录下的文件是英文语言的资源,如果在中文下使用不同的资源则需要新建values-zh/drawable-zh-xxxdpi这样,res目录下的命名规则是drawable-语言-国家-xxxdpi,在没有特定国家的资源会先找语言相关的目录.但是中文有点特别!这也是一个坑,按常规思维drawable-zh应该是简体中文/繁体中文共有的资源...原创 2018-10-30 19:21:01 · 5411 阅读 · 2 评论 -
Android Sqlite数据库转义字符模糊查询
Android数据库使用的是sqlite3,有时会有模糊查询的需求,比如包含“12345”的SQL查询语句为:select * from Table where title like "%12345%"模糊查询使用like关键字,%通配符表达0个或多个字符在当前位置,如果查询的内容刚好含有转义字符怎么办?一般是使用escape关键指定转义符,然后将查询内容的转义符做转义,但android里面...原创 2018-11-08 16:32:21 · 847 阅读 · 0 评论 -
图片加载库Picasso和Glide对比
Android上图片加载库现在出现了有挺多了,比较出名的有ImageLoader、Picasso、Glide、Fresco,这里来对比一下两个比较相像的库,Picasso和Glide。这两个库在API使用上非常的类似,都是很简单的链式调用法,但是实现上却有较大的不同,下载源码就能发现Glide复杂很多,Picasso相对就简单不少,下面就分几个方面来简单对比一下这两个库的不同之处和实现的关键点。...原创 2018-12-14 15:39:13 · 531 阅读 · 1 评论 -
如何通俗易懂地理解gradle
1.什么是Gradle从gradle.com的userguide可以看到这样一段话:Gradle is an open-source build automation tool focused on flexibility and performance. Gradle build scripts are written using a Groovy or Kotlin DSL. Read ...原创 2018-12-17 17:43:31 · 294 阅读 · 0 评论 -
深入理解Android中的Drawable类
Drawable对于Android开发工程师来说非常熟悉,最常用的用法是在drawable目录里放入png或其他格式的图片,然后在代码里就可以用resources访问到如:// 访问test图片资源getResources().getDrawable(R.drwable.test);这里不是要讲Drawable资源怎么使用,而是来看一下这个类实现的一些原理以及它相关的一些子类的实现原理。...原创 2018-12-25 17:00:45 · 1665 阅读 · 0 评论 -
妙用Fragment轻松实现Android动态权限申请库
Android M之后,有的在manifest定位的权限需要在运行时动态申请才可以使用,这方面的详细信息可以参考官方文档:https://developer.android.com/training/permissions/requesting?hl=zh-cn,一般是需要申请权限时,需要检查是否已经有权限,如果没有则申请,主要使用到如下步骤:首先使用ContextCompat.checkSel...原创 2019-01-24 11:41:54 · 1595 阅读 · 0 评论 -
Android O TextView内存泄漏
最近在版本迭代过程中遇到一个奇怪的内存泄漏问题,用mat打开hprof文件后,看到Activity实例还存在,查看其gc root后,是这样的结果:可以看到是因为AsycTask引用了TextView,然后引用了EditText再引用了mContext,其中EditText是自己代码里的用的控件,Calculator是一个Acitivity,奇怪的问题是代码里面没有任何在AsyncTask里使...原创 2018-09-23 10:12:48 · 1658 阅读 · 0 评论 -
UiAutomator2.0遍历控件
使用过UiAutomator1.0的人应该有非常痛的痛点,那就是在遍历View树时非常麻烦或者说做不到,百度上找到的基本上是这么用的:UiScrollable list = new UiScrollable(new UiSelector().resourceId("com.xxx.xxx:id/ni"));for (int i = 0; i < list.getChildCount();...原创 2018-10-01 21:29:30 · 6671 阅读 · 0 评论 -
android中恶心的getDrawingCache
最近要写一个可调整listviewitem的listview,当用户按下listitem的某个区域时,可以上下拖动item并放下时调整listitem的位置。在里面用了getDrawingCache来获取按下的listitem相应的bitmap并放在一个创建的ImageView中,然后在move的时移动ImageView。但发现即使调整的listItem的位置,按下时得到的bitmap也是原来的l原创 2012-03-26 19:59:22 · 1587 阅读 · 1 评论 -
android不让程序显示在最近程序列表中
最近看到一些程序打开了,但在最近程序列表里却找不到,但在DDMS的进程列表中却可以看到相应的进程,原还以为是在系统底层做了手脚,后来才发现activity有个属性叫android:excludeFromRecents,将它设置为true就可以让你的程序不在最近列表中显示,这样就类似实现了隐藏进程的功能了。原创 2012-03-21 19:47:08 · 1018 阅读 · 0 评论 -
利用UIAutomator发微信消息
最近在研究发自动给微信发消息,有研究过WebApi的方案实现出来了,但这种方式容易被封号,在想其他方案时想到用外挂这种偏门的方法看下行不行,于是就想到了android的UIAutomator测试框架,这个框架总体上来说是使用AccessibilityService来实现发送模似点击等消息,比如很多抢红包的方案就是用这个来做的.UIAutomator测试框架使用起来其实很简单,首先新建一个andro...原创 2018-06-04 11:03:34 · 5054 阅读 · 1 评论 -
Gradle插件开发入门
平常开发过程中一般只要对gradle里的一些配置懂就可以,但如果想要一些高级一点的处理功能比如自定义打包Jar,或者最近本人在研究android上面的AOP编程,其中用到了AspectJ参与编绎过程,这种就要自己定制一下gradle脚本,但只是修改gradle文件如果脚本内容一多项目一多维护起来就非常麻烦,使得原来的脚本并不清晰优雅,这样就得了解gradle插件开发原理把脚本写在一个插件。...原创 2018-05-30 11:09:46 · 994 阅读 · 0 评论 -
深入Gradle插件开发
上面一篇文章学会了基本的Gradle插件开发流程,相当于Helloworld,这次深入的探究下Gradle插件开发的其他方面,一个新建的app工程的build.gradle通常有如下内容:apply plugin: 'com.android.application'android { compileSdkVersion 27 defaultConfig { ap...原创 2018-05-30 14:48:15 · 3070 阅读 · 0 评论 -
定制Gradle任务自动打包jar
日常Android开发中,很大部分不需要自定义Gradle插件,但是需要定制一些task来满足需求,比如自定义打jar包,本文就借自定义打包来讲讲gradle的task使用方法和如何利用现在的task修改依赖关系。自定义打包在N年前我也曾写过一篇博文,[使用gradle打包指定包名和类的jar](http://www.alloyteam.com/2015/03/shi-yong-gradle-da...原创 2018-05-30 14:53:22 · 3061 阅读 · 2 评论 -
离线MP3波形解析
关于MP3波形显示网上其实也有不少的文章,但主要讲的是在录音过程中的展示,方法是通过获取MediaRecorder的getMaxAmplitude得到正在录音过程的最大振幅值来做的,但笔者遇到的问题是要从已经录好的文件里解析出波形,关于离线文件的解析波形也有个开源的项目叫做ringdroid 这个项目的原理是使用andrid原生MediaCodec先解析出pcm数据,然后再把pcm数据转...原创 2018-07-06 15:27:46 · 2065 阅读 · 1 评论 -
Android View/ViewRoot泄漏但Activity不泄漏问题
一般android里的内存泄漏都是activity泄漏,测试方法通常是在back回到桌面的时候,查看其activity,view实例对象是否为0来判断,activity泄漏一般比较好定位,方法网上文章也有很多,都是通过查看acitivity对象的gcroot路径来看是谁引用了来定位问题。最近在开发过程中遇到activity实例为0但是view/viewroot实例不为0的情况,这种情况定位问题跟...原创 2018-09-23 11:01:22 · 1689 阅读 · 2 评论 -
百度地图定位获取不到地址信息问题
在接入百度地图时,按官网的文档来做,在AndroidStudio配置时会遇到这个问题:sourceSets{ main{ jnilibs.srcDir 'libs' jni.srcDirs = [] //disable automatic ndk-build }}这个配置在Studi...原创 2019-01-23 17:22:40 · 3237 阅读 · 0 评论