自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

投木报琼zh的专栏

就是为了一个目标全力以赴,在战场上奋力厮杀至筋疲力竭,并获得最后的胜利

  • 博客(113)
  • 资源 (17)
  • 收藏
  • 关注

原创 LeakCanary-源码篇

本篇主要介绍LeakCanary的执行流程,一些具体代码不做详解。1. LeakCanary涉及类图关系解析2. LeakCanary执行序列图解析注:图片出自https://www.jianshu.com/p/0049e9b344b03. LeakCanary执行流程解析/** *所属类:ExampleApplication.java */prote...

2018-02-27 19:27:41 764

原创 UML类图关系汇总

在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)。1.泛化(Generalization)是一种继承关系,表示一般与特殊的关系。带三角箭头的实线,箭头指向父类。 2.实现(Realizatio...

2018-02-25 11:10:36 355

原创 Memory Profiler-实用篇

1. 简介Memory Profiler是Android Profiler中的一个组件 ,可帮助您识别因内存泄漏和内存抖动导致的卡顿,无响应,甚至crashes。它显示了应用程序内存使用的实时图形,可以捕获堆信息,强制GC以及跟踪内存分配。我们使用Memory Profiler执行以下操作:在时间轴中寻找可能导致性能问题的不良内存分配模式。dump Java heap查看在任何给定时间...

2018-02-24 17:22:24 10467 1

原创 MAT-实用篇

1. 简介MAT 是一个快速,功能丰富的 Java Heap 分析工具,通过分析 Java 进程的内存快照 HPROF 分析,从众多的对象中分析,快速计算出在内存中对象占用的大小,查看哪些对象不能被垃圾收集器回收,并可以通过视图直观地查看可能造成这种结果的对象。2. 获取Hprof文件ADM LeakCanary 使用LeakCanary库,打印解析文件的同时并保留了原...

2018-02-24 17:01:22 405

原创 LeakCanary-实用篇

1. leakcanary配置使用参考LeakCanary中文翻译文档LeakCanary 中文使用说明。2. 原理图3. 过程解析RefWatcher.watch() 创建一个 KeyedWeakReference 到要被监控的对象。然后在后台线程检查引用是否被清除,如果没有,调用GC。如果引用还是未被清除,把 heap 内存 dump 到 APP 对应的文件系统中...

2018-02-24 16:35:49 984

转载 说说Android应用的persistent属性

1 启动persistent应用在Android系统中,有一种永久性应用。它们对应的AndroidManifest.xml文件里,会将persistent属性设为true,比如:<application android:name="PhoneApp" android:persistent="true" android:label="@string/dialerIconLabel" androi

2016-08-01 17:58:36 549

转载 Android属性allowBackup安全风险浅析

1.allowBackup安全风险描述Android API Level 8及其以上Android系统提供了为应用程序数据的备份和恢复功能,此功能的开关决定于该应用程序中AndroidManifest.xml文件中的allowBackup属性值[1] ,其属性值默认是True。当allowBackup标志为true时,用户即可通过adb backup和adb restore来进行对应用数据的备份和恢

2016-08-01 17:27:02 618

原创 Android Studio 识别不到 Genymotion

解决方法:打开genymotion的主页面,设置sdk的位置为你android studio使用的sdk的目录。

2016-07-29 18:39:11 804

原创 Eclipse快捷键汇总

Ctrl + q 回到上一次编辑的地方F3 调到声明的地方ctrl + shift + r 打开资源ctrl + o 查找某个方法ctrl + e 打开编辑器之间浏览shift + enter 在当前行之下创建一个空白行ctrl + .及ctrl + l 下一个错误及快速修改

2016-07-29 18:36:56 298

转载 Eclipse如何快速修改包名及工程名

修改包名:修改一个文件名称,大家都知道一个快捷键,鼠标点击文件,按win+F2,有些同学可能会这样做,看下图:这样做能不能达到需求呢?答案是不能的,因为在它下面还有子包,我们可以看下这种方法修改后的情况:正确的方法应该怎么做呢?首先看你的根包下有多少子包,找到最底层的子包或文件(先参考第一幅图):修改z1的路径,修改后如下图:接下来同样的方法修改z2,z3的包名:最后修改MainActivity的包

2016-07-29 18:33:58 5140

转载 Android Studio插件安装及使用Genymotion模拟器

Android Studio自带的模拟器速度已经比Eclipse插件的快一点了,但是还不够暴力,不够爽。现在来说说最暴力的Genymotion模拟器如何结合AS使用。首先上Genymotion官网下载安装Genymotion,同时你需要在Genymotion官网官网上注册一个账号,这样你才能正常的使用Genymotion。1、进入AS的Settings界面左侧找到Plugins,点击下图箭头Butt

2016-07-29 18:12:08 890

原创 Android Studio;Gradle:unable to delete file

1、下载一个LockHunter.exe ,下载地址:http://pan.baidu.com/s/1qXkHNM82、在Android Studio中的gradle scripts中配置:task clean(type: Exec) {ext.lockhunter = '\"C:\Program Files\LockHunter\LockHunter.exe\"'def buildDir =

2016-07-29 18:05:01 1694

原创 Android Studio 包冲突的解决方法

Android Studio 中包冲突,即多个项目引用的相同的jar包1、cache.xml中查看那个那个项目下的jar包不一样,即定位是哪个jar包引起的冲突。cache.xml文件的路径:2、如果多个项目引用的相同的jar包,可以将jar包单独提出来,两个项目都依赖那个jar包:compile files('./../local_jar_files/XXX.jar')

2016-07-29 17:53:00 1837

原创 Android Studio 包冲突的解决方法

Android Studio下面有时候会出现包含多个相同类,即多个项目引用的相同的jar包,可以通过以下方法查找相同的jar包。**1、cache.xml中查看那个那个项目下的jar包不一样,即定位是哪个jar包引起的冲突。 cache.xml文件的路径:****2、如果多个项目引用的相同的jar包,可以将jar包单独提出来,两个项目都依赖那个jar包 compile files(‘./../l

2016-07-29 17:45:34 4978

原创 Eclipse 中的.9图片在Android Studio中报错

将.9图片放入drawable中引用

2016-07-29 17:39:35 322

转载 Android Studio 删除module

移除方式有两种:1、直接上图吧,选中你要移除的module,然后按红色的‘-’按钮,这个时候仅仅是把module从module列表中移除嘎,并没有在Android Studio目录结构中删除:2、直接编辑settings.gradle,当然这种方式不是很推荐,因为有时候你会发现你编辑完,点sync gradle(图中圈起来的)后,当然有时候会自动sync,会一直处于gradle sync状态,这个原

2016-07-29 17:35:54 276

原创 Android Studio中如何设置注释模板(针对file)

第一步,点击菜单栏的“File“->“Settings”,打开Settings窗口。第二步,点击“IDE Settings”下面的“File and Code Templates”,然后选中Templates里面的Class。第三步,然后选中Includes tab下面的File Header。第四步,在最右边的输入框中就可以输入我们想要设置的注释模板了。比如我们输入:/** * 作者:${USE

2016-07-29 17:29:12 495

原创 Android Studio方法注释模板(针对函数)

第一步File->Setting->Editor->Live Templates第二步点击+,创建一个Template Group 第三步填个你要的group名,我的叫custom 第四步选中你刚刚创建的group,创建Live Template 第五步填写Abbreviation,我这里填的是cmt,也即你这个注释的快捷方式,你敲cmt加回车,模板就出来了 Template text是注释

2016-07-29 17:19:17 844

原创 No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Inverse

Android studio中出现类似的错误,需将compileSdkVersion 23buildToolsVersion "23.0.2"修改成一样的

2016-07-29 17:08:19 501

原创 Android Studio打包及引用aar

aar 文件简介aar 文件其实就是一份 zip 包,和 jar 不同的是,它将一些资源文件、第三方库文件、so 文件等等都打包在内,而代码文件编译后压缩在 classes.jar 中。生成aar 文件要生成 aar 文件,必须将 Module 配置为 library,在 build.gradle 文件中如下:apply plugin: 'com.android.library';将 Module

2016-07-29 17:05:28 587

原创 GsonFormat快速实现JavaBean

方法一:1.Android studio File->Settings..->Plugins–>Browse repositores..搜索GsonFormat 2.安装插件,重启android studio方法二:-1.下载GsonFormat.jar ; 2.Android studio File->Settings..->Plugins –>install plugin from di

2016-07-29 16:51:04 220

原创 Android Studio 使用git

Android Studio 添加 git

2016-07-29 16:44:55 285

转载 Android Studio 更改背景和设置字体大小

1,设置字体大小2,设置背景主题更多在线主题包:https://www.zhihu.com/question/38958773转自:http://my.oschina.net/u/936286/blog/323538?fromerr=8kyJdSyG

2016-07-29 16:24:04 352

原创 Android Studio 快捷键汇总

Android Studio 快捷键

2016-07-29 16:02:05 313

原创 Android Jni开发之Android Studio中使用Android.mk

最近将以前的eclipse项目迁移到android studio上,开发的程序动态库的部分比较复杂,能不能直接在studio编译原来的jni呢?答案是肯定的,只需要配置一下就可以了。第一步,设置当前的ndk路径                 第二步,将eclipse工程中的jni目录拷贝到src/main目录下;第三步,在build.gradle的

2016-04-13 20:13:58 2815

原创 Android Jni开发之Android Studio中创建Jni程序

配置运行环境:Android Studio前面几篇讲的都是在eclipse下配置和运行Jni程序,那么在Android Studio中又是如何配置和运行Jni程序呢,下面给简单说下怎样在Android Studio中引入Jni程序。第一步,在Java层添加native接口,代码如下所示: public static native String getStringFromNative()

2016-02-14 16:34:23 1132

原创 Android Jni开发之交互处理

jni中应用层和native层是怎样交互呢?关于jni的用法我们可以参照http://docs.oracle.com/javase/6/docs/technotes/guides/jni/spec/jniTOC.html。下面用一个小例子来说明,java和c++的交互,主要讲三部分,对字符串、数组的处理和c++回调java函数。字符串的处理在Java类中声明native接口//

2016-02-03 16:39:58 963

原创 Android Jni开发之eclipse中自动化编译添加jni代码提示

配置环境:eclipse我们在jni开发会发现没有代码提示,即使编辑出错了,也不会有响应的提示,这样就影响我们的开发效率,那有没有什么方法可以添加代码提示。在eclipse中我们可以进行如下配置,可以实现编辑c/c++代码时增加代码提示。第一步,选中项目右键依次打开android Tools->Add Native Support,点击finish。

2016-02-03 14:24:56 4305 3

原创 Android Jni开发之函数签名和eclipse中自动化编译javap

配置环境:eclipse当我们需要在native中回调java类中的函数时,需要知道函数的签名,虽然函数签名自己写也不是很复杂,但是如果调用的多了,感觉工作量还是不小的,eclipse中同样也可以对javap进行配置,实现直接打印出java类中的函数签名。下面一起看下如何进行配置吧。第一步,打开run->External Tools->External Tools Configuratio

2016-02-03 13:18:25 741

原创 Android Jni开发之eclipse中自动化编译javah

配置环境:eclipse当我们每次添加一个本地接口的时候,每次都需要在命令窗口中执行“javah”操作生成对应的头文件,有没有简单的方法呢?答案是,yes,我们可以对eclipse进行简单配置就可以在编译过程中自动执行“javah”操作,下面是配置的步骤:第一步,第二步,第三步,第四步,

2016-02-03 13:01:15 788

原创 Android Jni开发之eclipse中自动化编译ndk-build

当我们编译c文件之后,每次都需要在命令窗口中执行“ndk-build”操作,有没有简单的方法呢?答案是,yes,我们可以对eclipse进行简单配置就可以在编译过程中自动执行ndk-build操作,下面是配置的步骤:第一步,将ndk关联到eclipse中,windows->preferences           我的eclipse配置的是r9d,前面环境配置用的是r10d,大家

2016-02-02 15:26:52 812

原创 Android Jni开发之eclipse中创建Jni程序和打印log

一般创建jni程序需要如下几个步骤:一、创建JNI目录在src目录下新建一个Jni的子目录二、编写native java层方法在java层编写响应的native方法,代码如下public static native String getStringFromNative();三、又分成以下绩效步1、生成jni头文件,进入项目目录下,通过javah生成.h文件,如下

2016-02-02 13:38:13 1396

原创 Android Jni开发之基础概念介绍

一、ndk是什么?帮助开发c/c++代码的工具。二、什么场景使用?cpu的运算、图形图像的处理等等。常见几种情况:1、代码保护:由于apk的java层代码很容易被反编译,而c/c++库反汇编难度较大。2、在NDK中调用第三方c/c++库,因为大部分的开源库都是用c/c++代码写的。3、便于移植,用c/c++写的库可以方便在其他的嵌入式平台上再次使用。三、什么是交

2016-02-02 12:21:03 546

原创 Android Jni开发之eclipse中NDK部署教程

Jni是java和c/c++交互的桥梁,Android开发的过程中避免不了使用Jni,下面简要介绍下NDK在eclipse中的配置步骤第一步,打开菜单栏的 Windows > Preference,出现如下对话框,在Android里面是没有NDK选项的。                                          第二步,关闭对话框,依次打开菜单栏的 Help

2016-02-02 11:48:37 689

原创 设计模式之命令模式

命令模式是一种设计模式,它尝试以物件来代表实际行动。命令物件可以把行动(action) 及其参数封装起来。在许多设计中,经常设计一个对象请求另一个对象执行某一个操作。如果请求者无法或者不希望直接和被请求者打交道,即请求对象无法或者不希望含有被请求者的引用,那么可以使用命令模式。命令模式里称提出请求的对象为请求者,被请求者的对象为接收者。在命令模式中,当一个对象请求另一个对象调用其方法时,不和被

2016-02-02 02:11:10 708

原创 设计模式之迭代器模式

迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。核心结构  1、集合:一个接口,规定了具体集合需要实现的操作。  2、具体集合:具体集合石实现了集合接口的一个实例,具体的集合按照一定的结构存储对象。具体集合应该有一个方法,该方法返回一个针对该集合的具体迭代器。  3、迭代器:一个接口,规定了遍历具体集合的方法,比如next(

2016-02-02 01:51:07 448

原创 设计模式之适配器模式

在设计模式中,适配器模式(英语:adapter pattern)有时候也称包装样式或者包装(wrapper)。将一个类的接口转接成用户所期待的。一个适配使得因接口不兼容而不能在一起工作的类工作在一起,做法是将类别自己的接口包裹在一个已存在的类中。结构图                                                     适配器模式分为类适配器模式

2016-02-02 01:36:18 442

原创 设计模式之模板方法模式

模板方法模式定义了一个算法的步骤,并允许次类别为一个或多个步骤提供其实践方式。让次类别在不改变算法架构的情况下,重新定义算法中的某些步骤。我觉得一个例子说的挺好,大意是说父亲有很多理想,就行医救人吧,但是父亲医术不行,只能靠儿子,儿子长大后遵从父亲大志,春风拂面,妙手回春,实现了父亲的理想,儿子做的事情早在出生前就定下来了,是父亲之前久定好的模板。核心结构1、抽象模板2、具体模板

2016-02-02 00:46:22 446

原创 设计模式之代理模式

代理模式为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。核心结构1、抽象角色:通过接口或抽象类声明真实角色实现的业务方法。2、代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作。3、真实角色:实现抽象角色,定义真实角色所要实

2016-02-02 00:19:17 416

原创 设计模式之工厂方法

工厂方法模式(FACTORY METHOD)是一种常用的对象创建型设计模式,此模式的核心精神是封装类中不变的部分,提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦、复用和方便后期维护拓展的目的。核心结构1、抽象工厂2、具体工厂3、抽象产品4、具体产品结构图

2016-02-01 23:58:12 403

Source Insight

程序编辑器和代码浏览器,可以很方便查看一些源代码

2016-04-09

TakeColor 取色器

可以快速提取某个颜色的色值

2016-04-09

Clover 资源管理工具

Clover 资源管理工具,可以自己添加标签页,能够快速定位某个文件

2016-04-09

SQLiteSpy sqlite数据库查看工具

sqilte 数据库查看工具

2016-04-09

CustomDemo

android 实现的跑马灯效果的TextView

2016-04-09

CycleViewPager

可以循环拖动的ViewPager

2016-04-09

BubbleDemo

模拟气泡从水底上升的效果

2016-04-09

图片压缩工具Pngyu

Pngyu可以对资源用到的图片进行压缩

2016-04-08

Android Studio jni 程序

一个简单的jni demo,意在学习如何在Android Studio中引入jni程序。

2016-02-14

jniDemo native和java交互

jni开发中应用层和native层之间交互

2016-02-03

jniDemo Log版

了解如何在jni项目中的.c文件中打印log的小工程,便于后期工程的调试

2016-02-02

jniDemo简单版

jniDemo是一个jni小工程,意在学习在工程中引入jni。

2016-02-02

重构RadioGroup

重构RadioGroup,实现多行多列RidioButton

2015-08-29

android animation demo

android animation 动画使用demo

2015-05-31

ARM Translation Installer

解决模拟器加载.so文件时出现"library 'system/lib/libhoudini.so' not find"问题

2015-05-21

RadioGroup

Android RadioGroup 换行, 支持多行多列

2015-01-05

自定义相机程序

自定义相机和裁剪,实现了连续对焦、点击对焦、变焦,拍照后自定义裁剪、旋转

2014-12-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除