自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Kitty_Landon的专栏

正在充电......

原创 Android 预置应用

Android如何将第三方应用预置到手机中?分析下该需求,预置第三方应用,要求可卸载,恢复出厂设置后可恢复这些应用。就需要将这些应用预置到system下面,如果放到data下面恢复出厂设置后就不能恢复这些应用了。 一、代码设计 1、创建“/system/presetapp”目录,将预置应用保存到该...

2018-04-03 16:42:39 597 0

原创 Android性能优化 -- 布局优化

一、前言 根据Google官方出品的Android性能优化典范,60帧每秒是目前最合适的图像显示速度,事实上绝大多数的Android设备也是按照每秒60帧来刷新的。为了让屏幕的刷新帧率达到60fps,我们需要确保在时间16ms(1000/60HZ)内完成单次刷新的操作(包括measure、lay...

2018-03-01 14:14:25 229 0

原创 Android性能优化 -- 应用启动优化之启动页设计

上篇博客我们学习了应用启动优化的一些优化思路,经过这些优化后,如果还不能达到你的要求,我们一般会做个启动页。因为启动页一般View数量比较少,业务逻辑比较简单,因此启动比较快。一、设计思路常规启动页设计思路通常点击桌面就会执行Application中的逻辑,然后会跳入启动页SplashActivi...

2018-02-08 18:01:39 312 0

原创 Android性能优化 -- 应用启动优化

应用的启动 启动方式 通常来说,在Android中应用的启动方式分为两种:冷启动和热启动。 1、冷启动:当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,这个启动方式就是冷启动。 2、热启动:当启动应用时,后台已有该应用的进程(例:按back键...

2018-02-07 16:26:06 384 0

原创 Android性能优化 -- 应用启动优化之DelayLoad

对于应用启动优化,其实核心思想就是在启动过程中少做事情,具体实践的时候无非就是下面几种:     1. 异步加载;     2. 延时加载;     3. 懒加载。     我们这篇博客主要学习一下一种延时加载(DelayLoad)的实现及其原理。DelayLoad的实现是非常简单的,但是...

2018-02-06 11:34:03 526 0

原创 Android性能优化 -- Memory Monitor工具检测内存泄露

这里我们通过一个例子来学习Memory Monitor工具的使用。 示例 package com.android.test; import android.content.Context; public class UserManger { public static Use...

2018-02-02 09:01:24 359 0

原创 Android 从setContentView谈Activity界面的加载过程

Android窗口     先来了解下Android系统的窗口布局。当我们设置窗口的Theme为可见样式时,Android的窗口如下图:     查看Activity的源码,Activity中有一个私有成员Window(mWindow),而Window是一个抽象类,它提供了绘制窗口的一组通用A...

2018-01-31 16:05:37 408 0

原创 Android性能优化 -- Systrace工具

Systrace简介     一般来说,我们的机器以60帧/秒显示时,用户会感觉机器很流畅,如果显示时出现丢帧的情况,需要知道当前整个系统所处的状态,这个时候Systrace便是最佳的工具选择。     Systrace是Android4.1中新增的性能数据采样和分析工具。它可帮助开发者收集A...

2018-01-30 10:43:18 10677 0

原创 Android性能优化 -- TraceView工具

TraceView是什么     TraceView是Android SDK中内置的一个数据采集和分析工具,它可以加载trace文件,用图形的形式展示代码的执行时间、次数及调用栈,找出最需要优化的点。     trace文件是log信息文件的一种,可以通过代码,Android Studio,或...

2018-01-26 13:31:39 250 0

转载 Android性能优化 -- 内存管理机制

1、初识内存优化 在Android的性能优化的各个部分里,内存的问题绝对是最令人头疼的一部分,虽然Android有垃圾自动回收机制不需要手动干预,但也正因为此,出现内存问题,如内存泄漏和内存溢出等,如果对内存管理机制不熟悉,会更加难以排查问题。 因为内存方面的知识较多且不易理解,内存优化部分就...

2018-01-24 09:27:28 237 0

原创 Android应用管理四 -- APK包的安装、卸载和优化(PackageManagerService)

http://www.oneplusbbs.com/thread-759852-1-1.htmlhttp://blog.csdn.net/kc58236582/article/details/53393570什么是ODEX?Android应用程序中有一个叫做classes.dex的文件,这是Jav...

2018-01-23 17:52:03 481 0

转载 Android7.0 Doze模式

在Android M中,Google就引入了Doze模式。它定义了一种全新的、低能耗的状态。在该状态,后台只有部分任务被允许运行,其它任务都被强制停止。这里我们就来分析一下Android 7.0中Doze模式相关的流程。基本原理基本原理        Doze模式可以简单概括为:        若...

2018-01-18 17:23:09 5260 1

转载 Android事件分发机制

UI界面组成 /** * Abstract base class for a top-level window look and behavior policy. An * instance of this class should be used as the top-level v...

2018-01-15 18:15:28 191 0

转载 Java虚拟机内存管理(二)--垃圾收集器及内存分配策略

概述     Java内存运行时区域的各个部分,其中程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的(尽管在运行期会由JIT编译器进行一些优化,但在本章基于概...

2018-01-11 14:51:59 156 0

原创 HashMap的理解

HashMap为什么是线程不安全的?     一直以来只是知道HashMap是线程不安全的,但是到底HashMap为什么线程不安全,多线程并发的时候在什么情况下可能出现问题?       HashMap底层是一个Entry数组,当发生hash冲突的时候,HashMap是采用链表的方式来解决的,...

2018-01-10 17:30:08 185 0

转载 避免后台进程被杀死的几种方法

Android的几种进程 前台进程     即与用户正在交互的Activity或者Activity用到的Service等,如果系统内存不足时前台进程是最后被杀死的。 可见进程     可以是处于暂停状态(onPause)的Activity或者绑定在其上的Service,即被用户可见,但由于...

2018-01-09 10:54:03 6501 0

转载 Android多线程--Android中常见的四种线程池

前言     使用线程池可以给我们带来很多好处,首先通过线程池中线程的重用,减少创建和销毁线程的性能开销。其次,能控制线程池中的并发数,否则会因为大量的线程争夺CPU资源造成阻塞。最后,线程池能够对线程进行管理,比如使用ScheduledThreadPool来设置延迟N秒后执行任务,并且每隔M秒...

2018-01-09 10:50:34 261 0

转载 实现线程同步的几种方式

为什么要使用同步     Java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查),将会导致数据不准确,相互之间产生冲突,因此加入同步锁以避免在该线程没有完成操作之前,被其他线程调用,从而保证了该变量的唯一性和准确性。     Java提供了一种内置的锁机制来支...

2018-01-09 10:41:08 5177 0

原创 Android广播管理一--Broadcast机制介绍

在Android系统中,广播(Broadcast)是在组件之间传播数据(Intent)的一种机制;这些组件甚至是可以位于不同的进程中,这样它就像Binder机制一样,起到进程间通信的作用。     在Android系统中,为什么需要广播机制呢?广播机制,本质上它就是一种组件间的通信方式,如果是两个...

2018-01-09 10:25:50 462 0

原创 Android广播管理二--广播注册(registerReceiver)流程分析

前面分析了Android系统的广播机制,从本质来说,它是一种消息订阅/发布机制。因此,使用这种消息驱动模型的第一步便是订阅消息;而对Android应用程序来说,订阅消息其实就是注册广播接收器。         接下来,我们继续分析Android应用程序是如何注册广播接收器的,以及把广播接收器注册到...

2018-01-09 10:17:07 3965 0

原创 Android广播管理三--广播发送(sendBroadcast)流程分析

应用进程处理广播 scheduleRegisterReceiver处理非串行化动态广播 BroadcastQueue.performReceiveLocked()     上面讲到调用deliverToRegisteredReceiverLocked方法时,会调用performReceiveLo...

2018-01-08 17:27:43 4659 2

原创 Android组件管理--应用程序启动流程

Activity的启动流程相对复杂一些,涉及到了Activity中的生命周期方法,涉及到了Android体系的CS模式,涉及到了Android中进程通讯Binder机制等等。 前言 我们先看一下源码中对Activity的描述,如下: An activity is a single, focuse...

2018-01-02 16:12:37 491 0

转载 Android多线程--IntentService的使用及原理

IntentService概述     这里我们看下HandlerThread在IntentService中的应用,建议先看下上一篇关于HandlerThread的介绍(点击打开链接),有助于理解IntentService。先来看下IntentService的特点:     (1)、它本质是一种特...

2017-12-08 09:59:33 191 0

转载 Android多线程--HandlerThread的使用以及原理

如果已经理解了Android的消息机制(Handler、Looper、Message、MessageQueue),再来看HandlerThread就很容易了,参考如下: http://blog.csdn.net/kitty_landon/article/details/53410183 源码解...

2017-12-07 10:08:12 168 0

转载 Android内存优化--OOM

Android内存优化是性能优化很重要的一部分,而如何避免OOM又是内存优化的核心。        Android内存管理机制         Android系统的Dalvik虚拟机扮演了常规的内存垃圾自动回收的角色,Android系统没有为内存提供交换区,它使用paging与memory-m...

2017-12-06 17:48:12 217 0

转载 Java虚拟机内存管理(一)--Java内存区域与内存溢出异常

概述 对于Java程序员来说,在虚拟机自动内存管理机制的帮助下,不在需要为没哟个new操作去写配对的delete/free代码(C/C++语音这样操作),不容易出现内存泄露和内存 溢出问题,由虚拟机管理内存,这一切看起来都很美好。 不过,也正是因为Java程序员把内存控制的权利交...

2017-11-30 19:50:31 196 0

转载 连接Java和C/C++层的关键--Android的JNI

JNI的作用     JNI是Java Native Interface(Java本地接口)的缩写。是从Java继承而来的,在Android中JNI的作用大大增强了。Android作为一种嵌入式操作系统,有大量和驱动、硬件相关的功能必须在native层实现,另外一些注重性能、功耗的功能使用C/C...

2017-11-23 14:37:13 450 0

原创 android平台的几个编译命令----make,mmm,mm,mma

在android源码根目录下,执行以下三步即可编译android: 1. .  build/envsetup.sh #这个脚本用来设置android的编译环境; 2. lunch #选择编译目标 3. make #编译android整个系统 android平台提供了几个命令用于编...

2017-11-09 10:35:03 5465 0

转载 Ubuntu中vi命令的编辑模式下方向键和退格键不能正常使用

在Ubuntu中,进入vi命令的编辑模式,发现按方向键不能移动光标,而是会输出ABCD,以及退格键也不能正常删除字符。这是由于Ubuntu预装的是vim-tiny,而我们需要使用vim-full,解决方法很简单,只需要以下两步:      步骤一,输入下述命令以卸载vim-tiny:su...

2017-07-03 10:02:41 514 0

转载 Linux下的tar压缩解压缩命令详解

Linux下的tar压缩解压缩命令详解

2017-06-08 17:45:31 318 0

转载 ubuntu14.04安装eclipse后启动栏图标为灰色问号

ubuntu14.04安装eclipse后启动栏图标为灰色问号的解决方案。

2017-06-08 14:11:33 992 0

原创 Android面试常见问题及解答

性能优化 性能优化包含了性能设计和性能优化两个阶段. 通过充分利用底层实现机制,诸如:局部算法、代码写法、编程语言技巧、界面Layout优化、控件的选择、编译器选项等,围绕性能关键流程去优化代码细节。 内存泄露主要原因: 内存泄露:程序中存在对无用对象的引用,导致GC无法回收。 内存超限...

2017-05-10 10:15:38 487 0

原创 Android性能优化 -- 自启动管理

自启动管理简介 Android手机上安装的很多应用都会自启动,占用资源越来越多,造成系统卡顿等现象。良好的自启动管理方案管理后台自启动和开机自启动,这样就可以节约内存、优化系统流畅性等。 自启动管理流程分析 自启动管理的实现贯穿了应用APK(AutoRun.apk)以及framework的Ac...

2017-04-11 15:56:39 7359 0

原创 Android HAL层简要分析

新的HAL框架 Hal Stub框架分析 Hal Stub的框架比较简单,主要记住三个结构体、两个常量、一个函数,简称321架构,定义在: /hardware/libhardware/include/hardware/hardware.h; /hardware/libhardware/...

2017-04-07 17:09:09 587 0

原创 Linux C常见函数

1、snprintf() intsnprintf(char *str, size_t size, const char *format, ...) 所需头文件:#include 功能: 将可变个参数(...)按照format格式化成字符串,然后将其复制到str中。 (1) 如果格式化后的字符串长...

2017-04-07 14:55:11 298 0

原创 Linux 常用命令

1、 vi、touch是创建文件的命令, cp、mv也算是吧,因为cp是拷贝文件,mv是移动文件

2017-04-07 11:13:00 237 0

转载 #ifndef/#define/#endif使用详解

想必很多人都看过“头文件中的 #ifndef/#define/#endif 防止该头文件被重复引用”。但是是否能理解“被重复引用”是什么意思?是不能在不同的两个文件中使用include来包含这个头文件吗?如果头文件被重复引用了,会产生什么后果?是不是所有的头文件中都要加入#ifndef/#defi...

2017-04-06 17:30:03 330 0

原创 Android N 进程间通信--Binder

Android的Build系统是基于GNU Make和shell构建的一套编译环境。Android是一个庞大的系统,它包含了太多的模块,各种模块的类型也有十多种。因此,为了管理整套源码的编译,Android专门开发了自己的Build系统。这套系统定义了大量的变量和函数,无论编写一个产品配置文件还是...

2017-04-06 15:59:20 434 0

原创 功耗优化--对齐唤醒

概况 Android手机上安装的很多应用都会频繁唤醒手机(唤醒系统、唤醒屏幕),造成手机耗电等现象。良好的对齐唤醒管理方案,就是对后台应用待机时不频繁唤醒,智能节省电量。 实现原理:APK作为该功能的入口,勾选应用后,将勾选的应用写入黑名单,并通知framework黑名单内容变化;framewo...

2017-03-29 21:15:33 5461 0

原创 Android7.1 亮度自动调节

1、代码主要涉及到frameworks/base/services/core/java/com/android/server/display 目录下的AutomaticBrightnessController.java。 2、AutomaticBrightnessController.java中的...

2017-03-28 15:01:51 9202 3

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