- 博客(12)
- 资源 (1)
- 收藏
- 关注
原创 浅析Java 字节码
第一个问题:为什么Java 为什么可以跨平台?和C++ 相比,很重要的一点就是:C++ 编译生成的是纯二进制的机器指令,而Java 通过编译器编译生成的是非纯二进制的字节码(.class文件)。而这种基于Unicode的字节码是不依赖于特定的计算机硬件架构而存在的——这就意味着只要有JVM环境,你的字节码就可以在任何平台上运行。其次,Java字节码的二进制数据以固定的格式进行存储和传输,消除了字节顺
2017-07-27 21:10:13 1292
原创 Android 应用性能优化--资源图片的内存管理
综述图片从来源上可以分成三大类:网络图片、手机存储中(EMMC 和Sdcard)的图片、APK资源图片,目前有很多成熟的图片加载库,主流的有Picasso 、Glide 、Fresco。但是没有覆盖APK资源图片。资源图片特征:1、一般在xml中引用 ,在Java中也是通过资源ID查找 。2、一般不使用异步记载,不会出现loading图这些中间状态。3、如果加载失败了那么APP Crash。由
2017-07-25 17:03:19 902
原创 Lint 静态代码检查工具
除了测试 Android 应用以确保其符合功能要求外,还必须确保代码不存在结构问题。结构混乱的代码会影响 Android 应用的可靠性和效率,增大维护代码的难度。例如,如果 XML 资源文件包含未使用的命名空间,则不仅占用空间,还会导致不必要的处理。其他结构问题,例如使用目标 API 版本不支持的已弃用的元素或 API 调用等,可能导致代码无法正常运行。Android Studio 提供一个名为 L
2017-07-24 19:48:57 1419
原创 Android源码分析-SparseArray<E>详解
SparseArray 实现原理在使用HashMap的时候IDE会给出如下提示:SparseArray 类注释如下: SparseArrays map integers to Objects. Unlike a normal array of Objects, there can be gaps in the indices. It is intended to be more memory
2017-07-24 16:31:36 591
原创 Android代码混淆之混淆规则
ProGuardAndroid开发的应用程序是用Java语言开发的, 由于Java代码是非常容易反编码的,为了很好的保护Java源代码,我们需要对编译好后的class文件进行混淆。ProGuard是一个免费的Java类文件收缩,优化,混淆和预校验器。它可以检测并删除未使用的类,字段,方法和属性。它可以优化字节码,并删除未使用的指令。它可以将类、字段和方法使用短无意义的名称进行重命名。这些步骤让代码更
2017-07-21 16:40:17 1990
原创 Android Studio中如何制作和使用.9.png(Nine Patch)图片
原理在Android应用开发计程中,为了适配不同的手机分辨率,图片大多需要拉伸或者压缩,这样就出现了可以任意调整大小的一种图片格式“.9.png”。这种图片是用于Android开发的一种特殊的图片格式,它的好处在于可以用简单的方式把一张图片中哪些区域可以拉伸,哪些区域不可以拉伸设定好,同时可以把显示内容区域的位置标示清楚。.9.png图片相比普通图片,在四条边会多出1px的空隙,我们在这1px的空隙
2017-07-21 13:17:35 2428
原创 Android 硬件加速
原文地址:http://developer.android.com/guide/topics/graphics/hardware-accel.htmlAndroid 3.0(API level 11)开始支持硬件加速2D渲染, 意思就是所有的View 的canvas都会使用GPU,然而硬件加速会占用更多的RAM。在API >= 14上,硬件加速是默认开启的。 如果你的应用只是标准的View和Dra
2017-07-19 21:26:15 469
原创 Android 7.0 适配-应用之间共享文件(FileProvider)
在Android7.0系统上强制启用了被称作 StrictMode的策略,带来的影响就是App对外无法暴露file://类型的URI了。如果在App中使用Intent携带这样的URI去打开外部App(比如:打开系统相机拍照),那么会抛出FileUriExposedException异常。官方给出如下的解决方案,就是使用FileProvider:我们来看一段代码:String cachePath =
2017-07-17 09:34:15 2102
原创 Git合并特定commits 到另一个分支
有时候我们需要只合并需要的那些commits,不需要的commits就不合并进去了。合并某个分支上的单个commit首先,用Git log查看一下你想选择哪些commits进行合并,例如:commit f3e50d18922390742ea653f163d20fa90e38c0c6Author: chenzongwen <chenzongwen@soyoung.com>Date: Wed J
2017-07-05 20:44:22 1367
原创 Android drawText获取text宽度的三种方式
@Override public void draw(@NonNull Canvas canvas) { canvas.drawColor(Color.parseColor("#F3F5F9")); paint.setColor(Color.parseColor("#AEAEAE")); paint.setAntiAlias(true);
2017-07-05 14:31:31 1242
原创 Android设置重复文字水印背景
效果如图:自定义Drawable :/** * Created by Owen Chan * On 2017-07-05. */public class WaterMarkBg extends Drawable { private Paint paint = new Paint(); private String logo = "SoYoung"; public WaterM
2017-07-05 14:09:10 3686 2
Mac 上反编译Apk 以及查看反编译后的文件
2017-10-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人