前言 ContentProvider为存储和获取数据提供统一的接口,它可以在不同的应用程序之间共享数据,本身就是适合进程间通信的。ContentProvider底层实现也是Binder,但是使用起来比AIDL要容易许多。系统也预制了很多...
阅读(35) 评论(0)
一.根源:   内存泄露简单说就是已经没有用的资源,但是由于被其他资源引用着无法被GC销毁。 二.内存泄露常见场景 1.单例导致内存泄露 单例的静态特性使得它的生命周期同应用的生命周期一样长,如果一个对象已经没有用处了,但是单...
阅读(20) 评论(0)
1、 前言 如果你对App优化比较敏感,那么Apk安装包的大小就一定不会忽视。关于瘦身的原因,大概有以下几个方面: 对于用户来说,在功能差别不大的前提下,更小的Apk大小意味更少的流量消耗,也意味着更多的用户下载; 对于产品来说,...
阅读(23) 评论(0)
一. 网络监控 1 Network MonitorAndroid Studio自带的Network Monitor简单直观,可以看出时间段之内的网络请求数量及访问速率; 2 Charles、Fiddler等抓包工具使用Cha...
阅读(19) 评论(0)
a.Bitmap.recycle(),Cursor.close,inputStream.close() b.大量加载Bitmap时,根据View大小加载Bitmap,合理选择inSampleSize,RGB_565编码方式;使用LruC...
阅读(21) 评论(0)
前言   开发一个app时,常用Activity和Fragment,由于操作方便Fragment越来越受欢迎,这样就避免不了Activity和Fragment、Fragment和Fragment之间的通信,我们知道Fragment和Fr...
阅读(19) 评论(0)
对于CA机构颁发的证书Okhttp默认支持 可以直接访问 但是对于自定义的证书就不可以了(如:https ://kyfw.12306.cn/otn/), 需要加入Trust 下面分两部分来写,一是信任所有证书,二是信任指定证书,访问自签...
阅读(33) 评论(0)
渲染性能 Android UI的工作分两阶段: 1.在UI线程Record View#draw 2.在RenderThread线程DrawFrame(RenderThread:使用GPU资源的线程) 第一阶段随着Vi...
阅读(36) 评论(0)
主要思想是这样的:将倒计时CountDownTimer放在Service里面进行,每过一秒就一条发广播,在主Activity里注册广播,收到广播后更新UI。 一、写一个类CodeTimerService继承自Service,重写onSt...
阅读(31) 评论(0)
1为什么要做性能优化? 手机性能越来越好,不用纠结这些细微的性能? Android每一个应用都是运行的独立的Dalivk虚拟机,根据不同的手机分配的可用内存可能只有(32M、64M等),所谓的4GB、6GB运行内存其实对于我们的应用不是...
阅读(41) 评论(0)
用户在调用层(Activity或Service中),发起一个网络请求,该请求肯定包含url,请求参数(requestParameter),以及我们需要给调用层提供一个请求成功或失败以后回调监听的接口dataListener(这一点与Vo...
阅读(25) 评论(0)
1、Default模式,也是没有设置缓存模式时的默认模式 这个模式实现http协议中的内容,比如响应码是304时,当然还会结合E-Tag和LastModify等头。 StringRequest request = new Stri...
阅读(35) 评论(0)
1. 一些基本概念 在开始之前,我们需要声明一件重要的事情是:我们不是在讨论在运行时通过反射机制运行处理的注解,而是在讨论在编译时处理的注解。注解处理器是 javac 自带的一个工具,用来在编译时期扫描处理注解信息。你可以为某些注解注册...
阅读(52) 评论(0)
 android的selector对于android开发者而言再熟悉不过了,只要定义一个drawable目录下定义一个selector的xml文件,在布局文件中引用这个xml文件或者在代码中setBackgroundDrawa...
阅读(38) 评论(0)
声明几个属性值: <declare-styleable name="GridImageViewGroup"> <attr name="childVerticalSpace" format="dimensio...
阅读(34) 评论(0)
1 2 下一页共2页  到第