![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android重点整理
CoderHigh
这个作者很懒,什么都没留下…
展开
-
Android基础-Activity
Activity一、activity生命周期 1.activity的4种状态Running/paused/stopped/killed 2.activity生命周期分析Activity启动->onCreate()->onStart()->onResume()点击Home键返回主界面(Activity不可见)->onPause()->onStop()当我们再次回到Act...原创 2018-03-03 01:30:54 · 103 阅读 · 0 评论 -
开源框架-glide
glide图片框架面试问题一、使用 二、源码详解http://blog.csdn.net/yulyu/article/details/60331803原创 2018-03-03 10:32:39 · 116 阅读 · 0 评论 -
Android异常与性能优化-ANR&OOM
Anr&OOM面试详解一、Anr1.什么是anrApplication Not Responding(程序无响应) 2.造成anr的主要原因应用程序的响应性是由Activity Manager和WindowManager系统服务监视的 ·主线程被IO操作(从4.0之后网络IO不允许在主线程中)阻塞·主线程中存在耗时的计算 Android中哪些操作是在主线程呢?Activity的所有生命周期...原创 2018-03-03 10:39:43 · 443 阅读 · 0 评论 -
Android异常与性能优化-Bitmap
Bitmap面试有关问题详解1.recycle 2.LRU(最近最少使用) 通过泛型类并使用LinkedHashMap并使用get()和put()方法来完成缓存添加和获取操作 缓存满时使用trimToSize把最早最少用的缓存对象从缓存队列移除并添加新的缓存对象 3.计算inSampleSize 4.缩略图 5.三级缓存网络缓存本地缓存内存缓存(优先加载)...原创 2018-03-03 10:47:44 · 123 阅读 · 0 评论 -
Android异常与性能优化-UI卡顿
UI卡顿一、UI卡顿原理60fps->16ms Overdraw(background和子布局设置重叠) 二、UI卡顿原因分析1.人为在UI线程中做轻微耗时操作,导致UI线程卡顿 2.布局Layout过于复杂,无法在16ms内完成渲染 3.同一时间动画执行的次数过多,导致CPU或GPU负载过重 4.View过度绘制,导致某些像素在同一帧时间内被绘制多次,从而使CPU或GPU负载过重 5.Vi...原创 2018-03-03 10:52:26 · 324 阅读 · 0 评论 -
Android异常与性能优化-内存泄漏
一、java内存泄漏基本知识1.java内存的分配策略1)静态存储区(方法区,静态数据、全局变量) 2)栈区(局部变量) 3)堆区(new出来的对象、数组,有GC) 2.java是如何管理内存的 3.java中的内存泄漏内存泄漏是指无用对象(不再使用的对象)持续占有内存或无用对象的内存得不到及时释放,从而造成的内存空间的浪费称为内存泄漏 二、Android内存泄漏1.单例 2.匿名内部类(改...原创 2018-03-03 10:56:40 · 144 阅读 · 0 评论 -
Android异常与性能优化-内存管理
内存管理一、内存管理机制概述1.分配机制2.回收机制 二、Android内存管理机制1.分配机制让更多的进程存在在内存当中2.回收机制 三、内存管理机制的特点1.更少的占用内存2.在合适的时候,合理的释放系统资源3.在系统内存紧张的情况下,能释放掉大部分不重要的资源,来为Android系统提供可用的内存4.能够很合理的在特殊生命周期中,保存或者还原重要数据,以至于系统能够正确的重新恢复该应用 四、...原创 2018-03-03 11:06:27 · 132 阅读 · 0 评论 -
Android异常与性能优化-冷启动优化
冷启动优化一、什么是冷启动1.冷启动的定义冷启动就是在启动应用前,系统中没有该应用的任何进程信息 2.冷启动/热启动的区别热启动:用户使用返回键退出应用,然后马上又重新启动应用 特点①冷启动:冷启动因为系统会重新创建一个新的进程分配给它,所以会先创建和初始化Application类,再创建和初始化MainActivity类(包括一系列的测量、布局、绘制),最后显示在界面上。②热启动:热启动因为会从...原创 2018-03-03 11:14:43 · 160 阅读 · 0 评论 -
Android异常与性能优化-其他优化
其他优化一、android不用静态变量存储数据1.静态变量等数据由于进程已经被杀死而被初始化2.其他数据传输方式:文件/sp/contentProvider 二、有关Sharepreference的安全问题1.不能跨进程同步2.存储Sharepreference的文件过大问题 三、内存对象序列化序列化:将对象的状态信息转换为可以存储或传输的形式的过程Serializeble Parcelable1...原创 2018-03-03 11:19:28 · 125 阅读 · 0 评论 -
热门前沿知识-MVC/MVP/MVVM
MVC/MVP/MVVM 一、MVC1.MVC定义M:业务逻辑处理(自定义Modele接口:数据库、网络、耗时操作)V:处理数据显示的部分(xml布局)C:Activity处理用户交互问题(Activity) 2.MVC特点耦合性低可扩展性好模块职责划分明确 3.MVC实例讲解 添加接口实现接口,在接口中实现想要的功能,定义抽象方法 4.总结①利用MVC设计模式,使得项目有了很好的可扩展和维护性②...原创 2018-03-03 11:23:42 · 164 阅读 · 0 评论 -
热门前沿知识-Android插件化
Android插件化一、插件化的由来65536/64k 二、插件化要解决的问题 1.动态加载apk 在Android中可以跟java一样实现动态加载jar,但是Android使用德海Dalvik VM,不能直接加载java打包jar的byte code,需要通过dx工具来优化Dalvik byte code。Android在API中给出可动态加载的有:DexClassLoader 和 PathCl...原创 2018-03-03 11:25:55 · 177 阅读 · 0 评论 -
热门前沿知识-Android热更新
Android热更新一、热更新流程1.线上检查到严重的crash2.拉出bugfix分支并在分支上修复问题3.jenkins构建和补丁生成4.app通过推送或主动拉取补丁文件5.将bugfix代码合到master上 二、主流热更新框架介绍1.Dexposed2.AndFix3.Nuwa 三、热更新原理1、Android类加载机制PathClassLoaderDexClassLoader 2.热修复...原创 2018-03-03 11:35:44 · 244 阅读 · 0 评论 -
热门前沿知识-进程保活
进程保活一、Android进程的优先级1.Foreground process(前台进程)2.Visible process(可见进程)3.Service process(服务进程)4.Background process(后台进程)5.Empty process(空进程) 二、Android进程的回收策略1.Low memory killer:通过一些比较复杂的评分机制,对进程进行打分,然后将分...原创 2018-03-03 11:39:10 · 201 阅读 · 0 评论 -
开源框架-Butterknife
Butterknife原理一、Butterknife使用简介其实就是一个依托Java注解机制来实现辅助代码生成的框架 1.绑定一个view2.给一个View添加点击事件3.给多个View添加点击事件4.给ListView setItemClickListener 二、Butterknife原理1.开始它会扫描Java代码中所有的ButterKnife注解2.ButterKnifeProcess...原创 2018-03-03 10:20:06 · 189 阅读 · 0 评论 -
开源框架-Volley
Volley源码解析一、volley使用简介1.首先需要获取到一个RequestQueue对象2.创建一个StringRequest对象3.将StringRequest对象添加到RequestQueue里面 总结:通过newRequestQueue(...)函数新建并启动一个请求队列RequestQueue后,只需要往这个RequestQueue不断add Request即可。 二、volley源...原创 2018-03-03 10:16:42 · 194 阅读 · 0 评论 -
开源框架-retrofit
retrofit源码解析一、retrofit使用简介1.在retrofit中通过一个接口作为http请求的api接口2.创建一个Retrofit实例3.调用api接口 一、retrofit源码剖析动态代理1.首先,通过method把它转换成ServiceMethod;2.然后,通过serviceMethod,args获取到okHttpCall对象;3.最后,再把okHttpCall进一步封装并返...原创 2018-03-03 10:13:56 · 182 阅读 · 0 评论 -
Android基础-Fragment
Fragment面试详解一、Fragment为什么被称为第五大组件?1.Fragment为什么被称为第五大组件? ①有自己的生命周期②动态的加载到Activity当中去 2.Fragment加载到Acitivty中的两种方式1)添加Fragment到Activity的布局文件当中->静态2)动态在activity中添加fragment(fragmentmanager)->动态 3.Fr...原创 2018-03-03 01:34:43 · 223 阅读 · 0 评论 -
Android基础-Broadcast Receiver
Broadcast Receiver面试详解一、广播1.定义:在Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制,Android中我们要发送的广播内容是一个Intent,这个Intent中可以携带我们要传送的数据。 2.广播的使用场景A.同一app具有多个进程的不同组件之间的消息通信B.不同app之间的组件之间消息通信 3.广播种类1)Normal Broadcas...原创 2018-03-03 01:42:20 · 110 阅读 · 0 评论 -
Android基础-Webview
Webview面试详解一、Webview常见的一些坑1.Android API level 16以及之前的版本存在远程代码执行安全漏洞,该漏洞源于程序没有正确限制使用WebView.addJavascriptInterface方法,远程攻击者可通过使用Java Reflection API利用漏洞执行任意Java对象的方法 2.webview在布局文件中的使用:webview写在其他容器中时(内存...原创 2018-03-03 01:45:24 · 154 阅读 · 0 评论 -
Android基础-Binder
一、Linux内核的基础知识1.进程隔离/虚拟地址空间(每个进程以为自己独占了一个内存空间,其实是虚拟的,通信需binder)2.系统调用(内核保护机制告诉程序只能访问许可的资源,内核层与用户空间分离开来,用户可以通过系统调用在用户空间访问内核的某些程序)3.binder驱动(运行在内核空间中负责各个用户进程通过binder通信的内核来进行交互的一个模块) 二、Binder通信机制介绍1.为什么要...原创 2018-03-03 01:47:28 · 121 阅读 · 0 评论 -
异步消息处理机制-Handler
Handler面试详解一、什么是handlerhandler通过发送和处理Message和Runnable对象来关联对应线程的MessageQueue.1. 可以让对应的Message和Runnable在未来的某个时间点进行相应处理2.让自己想要处理的耗时操作放在子线程,让更新ui的操作放在主线程Ps.子线程不能开启handler,因为消息队列默认绑定UI线程 一、handle的使用方法1.pos...原创 2018-03-03 01:51:27 · 600 阅读 · 0 评论 -
异步消息处理机制-AsyncTask
一、什么是AsyncTask它本质上就是一个封装了线程池和handler的异步框架 二、AsyncTask的使用方法1.三个参数 第一个Integer:执行AsyncTask时所要传入的参数,用于后台任务第二个Integer:后台执行任务时需要在界面上显示当前进度第三个String:表示结果,任务执行完毕需要对结果进行返回 2.五个方法 onPreExecute()表示在耗时操作开始之前需要进行的...原创 2018-03-03 01:54:13 · 247 阅读 · 0 评论 -
异步消息处理机制-handlerThread
一、handlerThread产生背景开启Thread子线程进行耗时操作多次创建和销毁线程是很耗系统资源的 二、handlerThread是什么Handler+thread+looper是一个thread内部有looper特点:·HandlerThread本质上是一个线程类,它继承了Thread·HandlerThread有自己的内部Looper对象,可以进行looper循环·通过获取Handle...原创 2018-03-03 01:56:35 · 326 阅读 · 0 评论 -
异步消息处理机制-IntentService
IntentService面试详解一、IntentService是什么IntentService是继承并处理异步请求的一个类,在IntentService内有一个工作线程来处理耗时操作,启动IntentService的方式和启动传统的Service一样,同时,当任务执行完后,IntentService会自动停止,而不需要我们手动去控制或stopSelf()。另外,可以启动IntentService...原创 2018-03-03 01:58:54 · 263 阅读 · 0 评论 -
View相关-View的绘制机制
View的绘制机制一、view树的绘制流程measure->layout->draw 二、measure 1.ViewGroup.LayoutParams2.MeasureSpec(测量规格)**一个View的测量过程是由父布局的MeasureSpec和该View的LayoutParams决定的。 重要方法:1.measure()调用onMeasue()2.onMeasure()(自...原创 2018-03-03 02:01:18 · 146 阅读 · 0 评论 -
View相关-事件并发机制
事件分发机制一、为什么会有事件分发机制安卓上面的View是树形结构的,View可能会重叠在一起,当我们点击的地方有多个View可以响应的时候,这个点击事件应该给谁呢?为了解决这一个问题,就有了事件分发机制。 二、三个重要的事件分发的方法1.dispatchTouchEvent**(决定是自己还是下发到子View来询问是否处理) 2.onInterceptTouchEv...原创 2018-03-03 02:07:57 · 190 阅读 · 0 评论 -
View相关-listview
listview面试详解一、什么是listviewListView是一个能将数据集合以动态滚动的方式展示到用户界面上的View 二、listview适配器模式 三、listview的recycleBin机制(回收站,保证有多行数据不会出现OOM)mActiveView表示活动的viewmScrapView表示所有废弃的view(滑动出屏幕外)mCurrentScrap表示当前废弃的view ...原创 2018-03-03 02:09:45 · 124 阅读 · 0 评论 -
Android项目构建-Android构建
1.Android构建流程 2.jenkins持续集成构建 是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能...原创 2018-03-03 02:11:32 · 334 阅读 · 0 评论 -
Android项目构建-git版本控制
git版本控制面试问题讲解一、git容易混淆的两个概念1.工作区2..gitgnore(不想上传到版本控制库的文件) 二、一些常用git命令1.git init 创建git仓库 2.git status 查看git仓库状态 3.git diff 查看修改了哪些内容 4.git add 把要添加的文件放入暂存区当中 5.git commit 将暂存区的内容提交到代码仓库中 6.git ...原创 2018-03-03 02:12:58 · 130 阅读 · 0 评论 -
Android项目构建-Proguard
Proguard面试问题详解一、proguard到底是什么ProgGuard工具是用于压缩、优化、混淆我们的代码,主作用是可以移除代码中的无用类、字段、方法和属性同时可以混淆 二、proguard技术的功能1.压缩(打包时删掉无用类) 2.优化(对字节码文件优化,移除.class文件里的无用字节码指令)字节码文件是经过编译器预处理过的一种文件,是JAVA的执行文件存在形式,它本身是二进制文件,但是...原创 2018-03-03 02:14:02 · 165 阅读 · 0 评论 -
开源框架-OkHttp
OkHttp源码解析一、OkHttp使用简介1.创建一个OkHttpClient对象2.创建一个request对象,通过内部类Builder调用生成Request对象3.创建一个Call对象,调用execute(同步)/enqueue(异步) 同步: 异步: 二、OkHttp源码分析 可见Interceptor(拦截器)是 OkHttp 最核心的一个东西,不要误以为它只负责拦截请求进行一...原创 2018-03-03 09:55:37 · 183 阅读 · 0 评论 -
Android动画原理
Android动画原理一、前言Android动画包含三种:补间动画(Tween Animation),帧动画(Frame Animation),属性动画 (Property Animation)。其中属性动画是从Android 3.0之后加入的。 本文着重介绍三种动画的实现原理,阅读本文的前提是应该可以简单的使用上述三种动画。如不熟悉可以参考以下链接,补间动画:http://www.cnblogs...转载 2018-02-25 11:41:42 · 270 阅读 · 0 评论