![](https://img-blog.csdnimg.cn/20190927151043371.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Android 进阶
文章平均质量分 92
Android 进阶
jianning-wu
努力过,期待中,好好工作!
展开
-
Android内存详解
1.什么是内存泄漏通俗来说,定义了的变量没使用,就是内存泄漏了。Android虚拟机的垃圾回收采用的是根搜索算法,还一种是程序计数器算法。GC会从根节点(GC Roots)开始对heap进行遍历。到最后,部分没有直接或者间接引用到GC Roots的就是需要回收的垃圾,会被GC回收掉。而内存泄漏出现的原因就是存在了无效的引用,导致本来需要被GC的对象没有被回收掉。2.And...原创 2017-06-05 09:33:41 · 438 阅读 · 0 评论 -
Android ANR详解(下)
其他应用占用的大量内存。系统服务无法及时响应。原创 2017-04-21 15:22:41 · 1630 阅读 · 0 评论 -
Android ANR详解(上)
Android ANR0. 序言带着问题去看待 垃圾回收(GC) 会比较好,一般来说主要的疑惑在于这么几点:为什么需要 GC ?虚拟机(JVM) 与 垃圾回收(GC) 的关系?GC 的原理有哪些?哪些 对象容易被 GC ?等等带着这些问题往下看:1. 为什么需要 GC ?GC: 是Garbage Collection的英文缩原创 2017-04-05 18:16:55 · 634 阅读 · 0 评论 -
APP优化 布局优化
include 、merge、ViewStub标签详解一.include标签include标签常用于将布局中的公共部分提取出来供其他layout使用,以实现布局模块化。代码1.1.公共Layout<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:an...原创 2017-07-26 18:02:35 · 8437 阅读 · 0 评论 -
APP优化 MultiDex优化
1.简介Timer类的作用是是负责计划任务的功能,也就是在指定的时间开始执行某一个任务。Timer类的主要作用是设置计划任务,但封装任务的类却是TimerTask类(计划任务是调用timer.schedule()方法去执行的,需要执行的任务为第一个参数,也就是TimerTask类)。也就是说,执行计划任务的代码要放在TimerTask的子类中,因为TimerTask是一个抽象类(public ab...原创 2017-05-31 18:55:01 · 2582 阅读 · 0 评论 -
APP优化 启动速度优化
什么是XposedXposed是一款特殊的安卓应用,诞生于著名的XDA论坛,由Xposed框架和Xposed模块组成。你可以把它看作是一部模块化手机,Xposed框架相当于手机的主体,而Xposed模块相当于模块化手机的诸如镜头模块、投影模块和电池模块此类的各式模块。通过Xposed框架与不同的Xposed模块的组合,你可以对你手机中的功能进行高度的自定义,比如定制一个最符原创 2017-06-23 10:40:48 · 13581 阅读 · 0 评论 -
APP优化 总概
1. Handler机制的核心类在源码分析前,先来了解Handler机制中的核心类1.1 类说明Handler机制 中有3个重要的类:处理器 类(Handler)消息队列 类(MessageQueue)循环器 类(Looper)1.2 类图1.3 具体介绍2. 源码分析...原创 2017-05-02 08:46:08 · 645 阅读 · 0 评论 -
Activity启动流程源码详解(下)
什么是哈希表?哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。记录的存储位置=f(关键字)这里的对应关系f称为散列函数,又称为哈希(Hash函数),采用散列技术将记录存储在一块连续的存储空间中,原创 2017-04-26 20:38:15 · 961 阅读 · 0 评论 -
Activity启动流程源码讲解(上)
1.CSS 概述CSS 指层叠样式表 (Cascading Style Sheets)。样式定义如何显示 HTML 元素。样式通常存储在样式表中。把样式添加到 HTML 4.0 中,是为了解决内容与表现分离的问题。外部样式表可以极大提高工作效率。外部样式表通常存储在 CSS 文件中。多个样式定义可层叠为一。2.CSS 语法CSS 规...原创 2017-04-07 17:24:32 · 1168 阅读 · 0 评论 -
Android FrameWork AMS+WMS+PMS详解(下)
观察者模式呢,理论我就不讲,对我来说就是面向接口编程的,讲下在平时开发中来怎么用把。事例》 当我们在开发中遇到用户修改头像的时候,在用户设置页面修改成功了,但是其他页面也用到过这头像,我们一般都会怎么做呢?1 写activity的回调, 这个毕竟基础的办法,但是遇到多个activity叠加或者关联的时候,或者是遇到还有其他回调的时候,那么逻辑就会有一大堆,非常麻烦,也不利于原创 2017-06-02 18:06:43 · 1559 阅读 · 0 评论 -
Android FrameWork AMS+WMS+PMS详解(上)
android的系统架构采用了分层架构的思想,如图下图所示。从下层到上层共包括四层,分别是linux内核层、系统运行库层、应用框架层和应用层。详细介绍linux内核层Android核心系统服务依赖于Linux2.6内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型。Linux内核也是作为硬件与软件栈的抽象层。驱动:显示驱动、摄像头驱动、键盘驱...原创 2017-06-07 10:33:42 · 2152 阅读 · 0 评论 -
事件分发机制详解(下)
本文讲解TextView,ImageView等没有默认clickable属性的View单独设置onTouch事件Android 事件传递机制:Android 事件传递机制初涉我们知道 Button,TextView 等控件的基类都是View。只要你触摸到了任何一个控件,就一定会调用该控件的dispatchTouchEvent方法。那当我们去触摸TextView的时候,底层就会去调用TextView...原创 2018-06-12 10:56:03 · 1406 阅读 · 0 评论 -
事件分发机制详解(上)
一、谷歌官方对流畅度的解释:Android流畅运行,需要运行60帧/秒, 则需要每帧的处理时间不超过16ms。二、IOS系统比ANDROID系统流畅的原因因为Android系统UI的框架设计的问题。在iOS中UI渲染过程具有绝对的优先等级,当用户接触到iPhone的触摸屏后,iOS中所有的进程都将停止,系统会将所有资源用于渲染UI过程。而在Andro原创 2017-06-27 17:31:35 · 6108 阅读 · 0 评论 -
Android Window机制详解
物联网应用开发与手机和平板的应用开发有一些区别,那么 Android Things 与 Android 又有哪些差别呢?变化Android Things 主要在 Android 的核心框架中扩展了一些支持物联的 API。开发者可以利用这些 API 直接与自定义的硬件打交道,Android Things 同时也简化了单个程序的应用,开机可以自动运行用户程序。核心应用包原创 2017-04-07 17:21:25 · 552 阅读 · 0 评论 -
SO文件的兼容和适配
一个类,里面存放了一些静态变量然后我们在客户端调用:结果输出如下:为什么会输出-2.8呢?原因如下:在Java对静态类的初始化的时候是分为一下两个阶段:1)系统为类里面的静态变量分配内存空间。2)按初始化的代码编写顺序对类变量执行初始化。所以在上面的代码里面的类初始化过程中。首先会为INSTANCE,和init原创 2017-06-05 14:11:07 · 2586 阅读 · 0 评论 -
ClassLoader详解
类加载过程类加载机制:JVM将类描述数据从.class文件中加载到内存,并对数据进行,解析和初始化,最终形成被JVM直接使用的Java类型。——《深入理解Java虚拟机 JVM高级特性与最佳实践》加载:加载阶段由类加载器负责,过程见类加载器;验证:验证阶段负责验证类数据信息是否符合JVM规范,是否是一个有效的字节码文件;准备:原创 2017-04-19 17:44:59 · 3679 阅读 · 0 评论 -
代码混淆
1.非静态内部类创建静态实例造成的内存泄漏例如,有时候我们可能会在启动频繁的Activity中,为了避免重复创建相同的数据资源,可能会出现如下写法:public class ScreenActivity extends AppCompatActivity { private static TestResource mResource = null; @Overrid...原创 2017-06-23 10:37:48 · 755 阅读 · 2 评论 -
序列化详解
1.Android 中实现序列化有两个选择:一是实现Serializable接口(是JavaSE本身就支持的)。一是实现Parcelable接口(是Android特有功能,效率比实现Serializable接口高效,可用于Intent数据传递,也可以用于进程间通信(IPC))。实现Serializable接口非常简单,声明一下就可以了,而实现Parcelable接口稍微复杂一些,...原创 2017-04-12 14:05:23 · 400 阅读 · 0 评论 -
常用的设计模式
1.MVCMVC,Model View Controller,是软件架构中最常见的一种框架,简单来说就是通过controller的控制去操作model层的数据,并且返回给view层展示,具体见下图当用户触发事件的时候,view层会发送指令到controller层,接着controller去通知model层更新数据,model层更新完数据以后直接显示在view层上,这就是MVC的工作原理...原创 2017-03-19 16:42:24 · 1422 阅读 · 0 评论 -
Java查看字节码&内存分配&垃圾回收详解
本章节讲述Thread 和Runnable简单实现多线程1.继承Thread类 实现多线程public class MyThread extends Thread{@Overridepublic void run() {super.run();System.out.println("Thread----Name----:"+Thread.currentT原创 2017-05-19 10:48:14 · 743 阅读 · 0 评论