自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 资源 (6)
  • 收藏
  • 关注

原创 Android内存管理机制之LowMemoryKiller

Android Kernel会定时执行一次检查,杀死一些进程以释放内存。那么如何判断哪些进程需要杀死呢?答案就是LowMemoryKiller机制。LowMemoryKiller定时进行检查,主要是通过进程的oom_adj值来判定进程的重要性。这个值越小程序越重要,被杀死的可能性越低。Android将应用的重要性分为以下几类:  名称

2016-06-28 10:14:55 1798

原创 Android之AlarmManager定时器

AlarmManager实质上是一个全局定时器,是Android中常用的一种系统级别的提示服务,在指定时间或周期性启动其他组件(Activity、Service、BroadcastReceiver)。常用方法:void set(int type, long triggerAtMillis, PendingIntent operation)设置在triggerAtMillis时间启动由o

2016-06-24 16:21:59 1916

原创 Android动态加载技术之三个基础性问题

动态加载技术(也称为插件化技术),可以减轻应用的内存和CPU占用,还可以实现热插拔,即在不发布新版本的情况下更新某些模块。动态加载必须解决的三个基础性问题:资源访问、Activity生命周期的管理和ClassLoader的管理。1.资源访问宿主应用调用未安装的插件apk,一个很大的问题就是资源访问,具体来说就是插件中凡是以R开头的资源都不能访问了,这是因为宿主应用中没有插件的资源。

2016-06-23 14:27:19 224

原创 crash log上传之UncaughtExceptionHandler

当应用发生crash时,系统会调用UncaughtExceptionHandler的uncaughtException方法,在该方法中可以捕获异常信息,可以选择把异常信息存储到SD卡中,然后在合适的时机(可以使用JobScheduler)通过网络将crash文件上传到服务器。调用Thread的setDefaultUncaughtExceptionHandler方法将它设置为线程默认的异常处理器

2016-06-22 16:38:16 369

原创 Android进程间通信之Socket

Socket也称为“套接字”,是网络通信中的概念,它分为流式套接字和用户数据报套接字两种,分别对应于网络传输控制层中的TCP和UDP协议。TCP协议是面向连接的协议,提供稳定的双向通信功能,TCP连接的建立需要经过“三次握手”才能完成,为了提供稳定的数据传输功能,其本身提供了超时重传机制,因此具有很高的稳定性。而UDP是无连接的,提供不稳定的单向通信功能,当然UDP也可以实现双向通信功能。

2016-06-17 16:18:35 1564

原创 远程服务例子3

本例子将会介绍远程服务回调接口的用法以及注销回调接口的方法、权限校验、远程服务挂掉后重连的方法等。直接上代码,远程服务aidl接口及服务代码:package com.example.aidl4.aidl;import java.util.List;import com.example.aidl4.aidl.PersionParcel;interface IAddPers

2016-06-17 09:49:02 459

原创 IPC基础概念Serializable、Parcelable、Binder

Serializable和Parcelable接口可以完成对象的序列化过程,通过Intent和Binder传输数据时就需要使用它们。有时需要把对象持久化到存储设备上或者通过网络传输给其他客户端,此时也可以使用它们。1.Serializable接口Serializable是Java提供的一个序列化接口,为对象提供标准的序列化和反序列化操作。想让一个对象实现序列化,只需要这个类实现Seri

2016-06-16 19:50:12 810

原创 Android进程间通信之Messenger

关于Messenger的官方描述是:允许实现基于消息的进程间通信的方式。可以看到,1.客户端发送一个msg给服务端2.服务端的handler将接收到的msg处理3.将处理结果封装成msg发送给客户端4.客户端的handler处理接收到msgMessenger的源码实现是基于AIDL的。例子:一个apk是服务端,接收客户端发来的消息,求和后发送给客户端;一个apk是客

2016-06-14 15:59:25 363

原创 加载图片工具类

使用HandlerThread实现的加载,HandlerThread中定义了线程、调用了Looper.prepare()和Looper.loop()方法。与Handler绑定后,loop()方法循环从MessageQueue中取Handler发送来的消息进行图片加载。直接上代码:/** * 加载图片核心类,可以拷贝直接用 * @Description: TODO * @auth

2016-06-13 14:09:20 451 1

原创 Java多线程

1.CountDownLatch递减计数器锁,一个同步辅助类,可以用来确保某些活动直到其他活动都完成后才继续执行。它包含一个递减计数器,该计数器初始值是一个正数,表示需要等待事件的数量。await()方法等待计数器到达0表示所需等待的事件都已完成。例子:线程2等线程1执行完才能开始执行CountDownLatch mLatch = new CountDownLatch(1);

2016-06-10 16:06:42 366

原创 Looper、Message、MessageQueue、Handler异步消息处理机制源码分析

1.LooperLooper主要是prepare()和loop()两个方法。prepare()方法主要是创建Looper和MessageQueue对象,并把Looper对象和线程绑定。loop()方法主要是从线程绑定的Looper对象中获取MessageQueue消息队列,在死循环中从MessageQueue中循环取消息交给target对象处理。public static fina

2016-06-08 18:27:20 564

原创 IntentService源码分析以及HandlerThread的用法

直接上源码:public abstract class IntentService extends Service { private volatile Looper mServiceLooper; private volatile ServiceHandler mServiceHandler; private String mName; private

2016-06-08 13:46:41 378

原创 动态加载so库文件

使用动态加载so库文件可以减小apk文件的大小,如:so库文件较大时,使用动态加载,在需要使用so库文件或者满足其他条件时,提示用户下载或自动下载,这样apk文件的大小就可以大大降低。Android加载so库文件的机制:加载so库文件基本都用的System类的loadLibrary方法,其实System类中还有一个load方法。/** * See {@link Runtim

2016-06-07 15:35:36 2383

原创 Android动态加载机制

Dalvik虚拟机类加载机制DexClassLoader和PathClassLoader这两个类都继承自ClassLoader的类加载器,本质上是重载了ClassLoader的findClass方法。它们在加载一个类之前,会去检查自己以及自己以上的类加载器是否已经加载过这个类,如果已经加载过,就会直接将之返回,而不会重复加载。DexClassLoader和PathClassLoader

2016-06-06 20:18:12 945

自启动监视器

查看所有应用的自启动行为,可以选择性的针对修改自启动问题,自启动开发利器

2018-04-24

性能监视器(apk文件)

监视CPU使用率、IO使用率等的监视器,性能相关开发的利器

2018-04-24

DllInject.exe进程注入工具

进程注入工具

2016-12-29

加载图片例子

加载图片例子

2016-06-14

大量图片快速加载工具类例子

大量图片快速加载工具类例子

2016-06-13

空空如也

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

TA关注的人

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