
android
文章平均质量分 66
罗小辉
这个作者很懒,什么都没留下…
展开
-
安卓性能优化(3)之三大内存泄漏检测工具
三大内存泄漏检测工具:LeakCanaryStrictModeAndroid Profiler常见内存泄漏单例中持有context;非静态内部类;handler;子线程;IO等资源未关闭。LeakCanary使用说明在build.gradle添加如下依赖:dependencies { debugImplementation 'com.sq...原创 2018-08-17 15:51:04 · 4483 阅读 · 0 评论 -
android 事件分发机制(图文详解)
在Android开发中,事件分发机制是一块Android比较重要的知识体系,了解并熟悉整套的分发机制有助于更好的分析各种点击滑动失效问题,更好去扩展控件的事件功能和开发自定义控件,同时事件分发机制也是Android面试必问考点之一,如果你能把下面的一些事件分发图当场画出来肯定加分不少。废话不多说,总结一句:事件分发机制很重要。Android 事件分发流关于Android 事件分发机制网上的博文很多,转载 2016-07-12 15:56:35 · 3432 阅读 · 0 评论 -
android AIDL详解
序言aidl,android接口定义语言,用于进程间通信,是Binder实现的最好体现!关于Binder,大家可以看下这篇文章 Android Binder设计与实现 文章比较晦涩,但对于做应用层开发,了解下binder实现,还是很有必要的。使用场景都说aidl是用于进程间通信,但进程间通信其实我们平时用得比较少。很多平台级的产品却用了,比如百度地图,jpush,微信等。之前听一朋友说,他用了某推原创 2016-08-09 13:07:03 · 1576 阅读 · 0 评论 -
android 6.0权限申请封装
此篇文章目的在于封装android 6.0权限申请,让开发者能进行快速开发。开发者只需要在项目中添加一个工具类,在baseActivity中添加几个方法,在需要的activity中添加三个方法即可~权限流程关于android 6.0权限问题,大家如果用api23+编译的话,应该都有遇到过crash的情况。google开发团队觉得有些隐私权限,希望得到用户许可,以弹出框的形式告诉用户,其权限流程如下:原创 2016-08-30 15:58:39 · 3418 阅读 · 0 评论 -
Android Binder设计与实现
Binder是Android系统进程间通信(IPC)方式之一。Linux已经拥有管道,system V IPC,socket等IPC手段,却还要倚赖Binder来实现进程间通信,说明Binder具有无可比拟的优势。深入了解Binder并将之与传统IPC做对比有助于我们深入领会进程间通信的实现和性能优化。转载 2016-08-05 12:30:37 · 925 阅读 · 0 评论 -
在任意目录下使用某个shell脚本
之前只知道如果想用某个命令的话,在环境变量里设置下这个目录就好了,其实在任意目录下使用某个shell脚本,也是在环境变量里配置。 我的是mac环境: 1. 执行命令 open ./.bash_profile 2. 在文件中添加目录,比如我想用dex转jar的shell脚本,就添加export PATH=/Users/luoxiaohui/apktool/dex2jar-0.0.9.15:$PA原创 2016-07-21 19:33:28 · 6125 阅读 · 0 评论 -
Android 内存泄漏总结(超级实用)
Android 内存泄漏总结内存管理的目的就是让我们在开发中怎么有效的避免我们的应用出现内存泄漏的问题。内存泄漏大家都不陌生了,简单粗俗的讲,就是该被释放的对象没有释放,一直被某个或某些实例所持有却不再被使用导致 GC 不能回收。转载 2016-06-22 16:45:25 · 11354 阅读 · 3 评论 -
android studio 快捷键
Alt+回车 导入包,自动修正 Ctrl+N 查找类 Ctrl+Shift+N 查找文件 Ctrl+Alt+L 格式化代码 Ctrl+Alt+O 优化导入的类和包 Alt+Insert 生成代码(如get,set方法,构造函数等) Ctrl+E或者Alt+Shift+C 最近更改的代码 Ctrl+R 替换文本 Ctrl+F 查找文本 Ctrl+Shift+Space 自动补转载 2016-07-26 11:07:37 · 762 阅读 · 2 评论 -
$ANDROID_HOME is not defined.
在执行gradlew命令时,出现$ANDROID_HOME is not defined错误,以下步骤经测试已解决问题。 1.在命令行中输入如下命令:open ~/.bash_profile 2.在.bash_profile文件中首行加入如下代码:export ANDROID_HOME=/YOUR_PATH_TO/android-sdkexport PATH=$ANDROID_HOME/pla原创 2016-07-25 15:15:48 · 1381 阅读 · 0 评论 -
android shell打包报错
W: /Users/luoxiaohui/Develop/svn/坑爹的apk/QuickPos2.0/res/values/public.xml:64: error: Public symbol drawable/actionsheet_top_normal declared here is not defined.原创 2016-06-16 19:01:59 · 3327 阅读 · 1 评论 -
android studio bug汇总及解决办法
Error running app: Instant Run requires ‘Tools | Android | Enable ADB integration’ to be enabled.在android studio工具栏中作如下操作:Tools -> Adnroid -> enable ADB integrationjava.lang.UnsatisfiedLinkError: retu原创 2016-08-22 18:41:56 · 2447 阅读 · 1 评论 -
android webview ERR_UNKNOWN_URL_SCHEME
在android中webview请求网页时,有的网页跳转会报这个错,我之前代码是: WebViewClient mWebviewclient = new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) {原创 2016-10-14 15:44:11 · 13573 阅读 · 0 评论 -
安卓性能优化(2)之内存优化详解
( PS:这里是在不考虑内存泄漏的前提下来讨论的。)jvm浅析java的jvm的内存可分为3个区:栈区(stack):每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象),对象都存放在堆区中。每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。栈分为3个部分:基本类型变量区、执行环境上下文、操作指令区(存放操作指令)。...原创 2018-08-13 20:40:37 · 890 阅读 · 0 评论 -
安卓性能优化(1)之冷启动 热启动详解
应用启动方式通常来说,启动方式分为两种:冷启动和热启动。 1、冷启动:当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,这个启动方式就是冷启动。 2、热启动:当启动应用时,后台已有该应用的进程(例:按back键、home键,应用虽然会退出,但是该应用的进程是依然会保留在后台,可进入任务列表查看),所以在已有进程的情况下,这种启动会从已有的进程中来启动应...原创 2018-08-10 09:31:50 · 1338 阅读 · 0 评论 -
android Volley源码解析笔记
现在android主流用的网络请求框架是Okhttp3和Retrofit2+Rxjava两种,而我之前很多项目都是用的Volley,然后阅读开源框架源码的经验不够,所以就拿Volley练手了。原创 2017-09-28 16:41:03 · 8687 阅读 · 0 评论 -
Replugin 实战1 - 加载远程组件
插件接入添加 RePlugin Plugin Gradle 依赖在项目根目录的 build.gradle(注意:不是 app/build.gradle) 中添加 replugin-plugin-gradle 依赖:buildscript { dependencies { classpath 'com.qihoo360.replugin:replugin-plugin-grad原创 2017-08-03 09:03:34 · 8226 阅读 · 0 评论 -
android Path moveTo lineTo实例详解
Why最近在写android画图经常用到这几个什么什么To,一开始还真不知道cubicTo这个方法,更不用说能不能分清楚它们了,所以特此来做个小笔记,记录下moveTo、lineTo、quadTo、cubicTo、arcTo的作用,在自定义view的时候经常用到。 接下来也会分享下这几天写的几个东西。相信对于新手也会有点帮助,高手也帮忙看看有没错,欢迎吐槽吐槽。moveTomoveTo 不会进行绘转载 2017-04-26 11:54:53 · 14706 阅读 · 0 评论 -
android 雷达图 蜘蛛图
项目需要画一个蜘蛛图,补了下蛋疼的三角函数,效果图如图所示: 本文主要是提供画基础自定义view的思路,通过这种思路,从而实现复杂的自定义view,分为以下几个步骤:绘制正多边形/** * 绘制正多边形 */private void drawPolygon(Canvas canvas) { Path path = new Path(); float r = r原创 2017-05-13 16:55:53 · 8063 阅读 · 0 评论 -
android 上传aar到私有maven服务器
搞这个东西也是花了蛮长时间,主要还是对gradle中的groovy语言不熟悉所导致的,写下来,以防下次再入坑~在gradle中新建task如果你需要将某个module打包成aar,并上传到maven上去,需要在这个module下面的build.gradle文件中添加如下代码:其中代码:apply plugin: 'maven'表示我们要应用的插件。 MAVEN_LOCAL_PATH表示maven原创 2017-04-14 00:01:33 · 15864 阅读 · 4 评论 -
gradle依赖中对于版本控制的统一管理
最近换工作了,新公司对于代码规范和版本控制有蛮高的要求,在gradle依赖中对于版本控制这一块,我之前的做法是这种:compile 'com.android.support:appcompat-v7:23.4.0'compile 'com.jcodecraeer:xrecyclerview:1.2.6'在依赖第三方库时,直接这样写,嗯,简单粗暴。但是不利于后期的维护,当项目大了之后,如果第三方库有原创 2017-04-13 18:07:12 · 14268 阅读 · 0 评论 -
Android studio maven pom.xml
通用pom.xml文件模板及其注释:<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://mave原创 2017-04-10 18:22:20 · 17068 阅读 · 0 评论 -
java 23种设计模式详解
设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。其实还有两类:并发型模式和线程池模式转载 2016-07-01 14:45:14 · 22261 阅读 · 8 评论 -
java 身份证验证
public class IDCard { /*********************************** 身份证验证开始 ****************************************/ /** * 身份证号码验证 1、号码的结构 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,原创 2016-06-15 11:15:03 · 1438 阅读 · 0 评论 -
android 弹性ScrollView(已优化)
想要的效果最近项目中想实现一个效果,效果如下: 网上demo展示就是上滑或者下滑,能实现弹性效果,代码大致如下:public class BounceScrollView extends ScrollView { private View inner;// 孩子View private float y;// 点击时y坐标 private原创 2016-07-12 19:52:14 · 12998 阅读 · 14 评论 -
android ant配置以及批量打包
最近公司接触到用ant批量打渠道包,学习了下,特意写篇文章share出来~原创 2016-03-09 20:36:21 · 2127 阅读 · 0 评论 -
android listview图片错位原理及解决方法
最近去面试被问到了listview中图片错位的原因,而我一直在往viewholder和tag机制上聊(被虐了),其实viewholder和tag机制只是解决图片错位的方法,而非产生图片错位的原理,回来又赶紧脑补了下~首先上图 图片错位原理: 如果我们只是简单显示list中数据,而没用convertview的复用机制和异步操作,就不会产生图片错位;重用convertview但没用异步,也不会有错位原创 2016-02-23 22:30:26 · 16410 阅读 · 6 评论 -
android IntentService理解
IntentService继承了Service,拥有Service的所有功能,也还帮我们解决了线程的问题!因为IntentService用到了Handler机制,能在里面处理多线程,比Service好用多啦!原创 2016-02-22 18:21:28 · 2455 阅读 · 0 评论 -
StringBuilder StringBuffer区别
StringBuilder vs StringBuffer: 共同点:两者都是对String进行操作。 区别: StringBuilder:线程不安全,但效率更高; StringBuffer: 线程安全,但效率不高; 使用场景: 当追求效率,且没有多线程操作时,优先使用StringBuider;原创 2016-02-22 18:31:27 · 1630 阅读 · 0 评论 -
android listview复用机制原理
最近换工作了,有了些时间,我也来写博客啦! listview我们都知道用ViewHolder来实现它的复用机制,那它的原理是什么呢? listview继承于AbsListview,它的具体实现是: 1.AbsListview中有两个view,activeview和scrapview; 2.activeview表示显示数据,如果设置了tag后,显示的数据会存放到s原创 2016-02-22 17:54:32 · 3041 阅读 · 0 评论 -
android 属性动画 vs 延时实现动画
属性动画我们用属性动画实现动画常用的代码:ObjectAnimator.ofFloat(targetView,"translateX",0,100) .setDuration(1000).start();属性动画一般只能实现一些比较简单的动画,使用View的scrollTo却能实现复杂动画,下面结合属性动画和scrollTo实现动画:final int startX =原创 2016-03-07 22:32:47 · 6366 阅读 · 0 评论 -
android 动画之Scroller
我们现在自定义一个类AutoScrollTextView,需求是传入x移动的距离,当调用它时,这个view水平渐变滑动。class AutoScrollTextView extends View{ Scrol原创 2016-03-05 14:33:39 · 2372 阅读 · 0 评论 -
Android内存泄漏分析及调试
项目上遇到一个问题,调用activity.finish()无法destroy掉此activity,发现是context泄漏~转载 2016-03-29 15:09:44 · 1563 阅读 · 0 评论 -
android 自定义进度条下载apk并更新
下载文件使用子线程,更新到UI上使用handler,效果如图: 主要代码如下: public void downFile(final String httpUrl,final Handler handler) { new Thread(new Runnable() { @Override public void run() {原创 2016-03-03 22:35:53 · 3717 阅读 · 0 评论 -
android shell打包
1. 解包2. 按channel拷贝到不同文件夹3. 替换资源4. 打包5. 签名原创 2016-04-04 20:47:19 · 4719 阅读 · 0 评论 -
android 单例模式和策略模式的结合使用
单例模式类型1. 懒加载模式懒加载模式是我们在android中最常用的模式,具有高效率高性能的优势,缺点就是在多线程操作时,会有线程不安全问题。 适用场景:只在主线程中操作,或者只在某个子线程操作。原创 2016-04-09 17:39:18 · 2718 阅读 · 0 评论 -
android listview源码解析
在Android所有常用的原生控件当中,用法最复杂的应该就是ListView了,它专门用于处理那种内容元素很多,手机屏幕无法展示出所有内容的情况。ListView可以使用列表的形式来展示内容,超出屏幕部分的内容只需要通过手指滑动就可以移动到屏幕内了。 另外ListView还有一个非常神奇的功能,我相信大家应该都体验过,即使在ListView中加载非常非常多的数据,比如达到成百上千条甚至更多,Lis转载 2016-07-06 14:33:04 · 2080 阅读 · 3 评论 -
android 清除所有activity
android中清除所有activity的需求,还是在蛮多场景出现的,最近项目中有遇到,把解决方法贴出来,也标记下~ 首先自定义一个ActivityManager管理类,用于管理栈中的activitypublic class ActivityManager { private static final String TAG = "ActivityManager"; private原创 2016-06-12 18:14:43 · 6690 阅读 · 0 评论 -
markdown编辑器语法——字体、字号与颜色
Markdown是一种可以使用普通文本编辑器编写的标记语言,通过类似HTML的标记语法,它可以使普通文本内容具有一定的格式。但是它本身是不支持修改字体、字号与颜色等功能的!优快云-markdown编辑器是其衍生版本,扩展了Markdown的功能(如表格、脚注、内嵌HTML等等)!对,就是内嵌HTML,接下来要讲的功能就需要使用内嵌HTML的方法来实现。字体、字号与颜色我是黑体字 我是微软雅黑转载 2016-06-12 13:03:17 · 3157 阅读 · 2 评论 -
android eclipse移植项目到android studio
如果你之前有用Eclipse做过安卓开发,现在想要把Eclipse中的项目导入到Android Studio的环境中,那么首先要做的是生成Build Gradle的文件。因为Android Studio 是用Gradle来管理项目的,具体操作步骤如下:从Eclipse中导出 1.将你的ADT插件版本升级到22.0以上( 这一步非常重要),如果没升级到22.0以上,导出的工程各种坑。原创 2016-06-27 19:44:03 · 1927 阅读 · 0 评论 -
android 保存图片到相册并正常显示
分为三个步骤,1. 保存图片;2.把文件插入到系统图库;3. 通过广播通知图库更新. 不啰嗦,直接上代码~ public static void saveImageToGallery(Context context, Bitmap bmp) { // 首先保存图片 File appDir = new File(Environment.getExternalSt原创 2016-06-12 12:52:59 · 3690 阅读 · 4 评论