
android面试题
文章平均质量分 80
胖哥哥飘过
这个作者很懒,什么都没留下…
展开
-
Android面试题(22)-lruCache与DiskLruCache缓存详解
关于lruCache(最近最少使用)的算法,这是一个比较重要的算法,它的应用非常广泛,不仅仅在Android中使用,Linux系统等其他地方中也有使用;今天就来看一看这其中的奥秘;讲到LruCache,就不得不讲一讲LinkedHashMap,而对于LinkedHashMap,它继承的是HashMap,那么我们就先从HashMap开始看起吧;注:此篇博客所讲的所有知识都是在jdk1.8环境下的,j...原创 2018-03-06 22:24:38 · 9948 阅读 · 0 评论 -
android面试(10)-IntentService
1.概念:IntentService是继承并处理异步请求的一个类,在IntentService内有一个工作线程来处理耗时操作,启动IntentService的方式和启动传统的Service一样,同时,当任务执行完后,IntentService会自动停止,而不需要我们手动去控制或者stopSelf()。另外,可以启动IntentService多次,而每一个耗时操作会以工作队列的方式在IntentSe...原创 2018-02-28 20:09:23 · 539 阅读 · 0 评论 -
android面试(11)-Volley
忙活了半天,终于把异步消息处理机制差不多都介绍完了,赶紧趁热打铁,从今天开始,就开始复习一些市面上比较有名的开源框架,每个开源框架大致都分为两步来说道说道,先谈一下怎么使用,会有代码实例,其次在讲一下关于源码的分析,好了,话不多说,现在就开始吧。今天先讲Volley,volley是google推出的异步加载的一个网络框架,功能很强大,它适合那些数据量小的但是需要频繁去获取的情况。1.简单使用:(1...原创 2018-02-28 21:15:31 · 585 阅读 · 0 评论 -
android面试(12)-Okhttp
可以说,okhttp非常的火,火了好几年了,虽然现如今比较火的网络框架是retrofit,但是,retrofit内部其实也是用了okhttp;1.使用方法:(1)创建一个请求客户端okhttpClient对象(2)创建一个请求Request对象,通过Build模式创建(3)创建一个实际的http请求call对象,它可以调用execute(同步获取数据),也可以调用enqueue(异步获取数据);p...原创 2018-02-28 22:21:11 · 4317 阅读 · 0 评论 -
Android面试题(31)-App启动流程
先贴个链接,总结的挺全面在看这篇文章之前,希望先看完我的之前的博客 android面试(6)-Binder机制,因为关于App启动流程设计很多Binder通信;先将“三个进程”,“六个大类”进行介绍:三个进程:Launcher进程:整个App启动流程的起点,负责接收用户点击屏幕事件,它其实就是一个Activity,里面实现了点击事件,长按事件,触摸等事件,可以这么理解,把Launc...原创 2018-03-08 23:43:59 · 10819 阅读 · 1 评论 -
android面试(13)-retrofit
retrofit可以说是如今市面上最火的网络框架,最常用的大概就是retrofit+RxJava+okhttp框架,结合MVP设计模式的经典应用了吧,今天我们只讲retrofit,上一篇已经说过,retrofit的内部其实也是使用了okhttp的1.使用方法:(1)创建一个接口作为http请求的api接口public interface Api { @GET("repos/{owner}...原创 2018-02-28 23:10:52 · 3009 阅读 · 1 评论 -
android面试(14)-注入框架ButterKnife
今天,我们来讲一讲ButterKnife注入框架,众所周知,Android开发时,如果我们需要对一个xml中的控件进行使用的话,那么就必须去调用findViewById方法,我说一下我对这个方法的感受,一开始接触android的时候,用的非常爽,在xml中写好控件,在Activity中直接调用这么一个简单的方法就ok了;但是随着开发的一步步加深,一个页面中需要展现的控件越来越多,这就需要我们在页面...原创 2018-03-01 22:56:26 · 725 阅读 · 0 评论 -
Android面试题(32)-android编译过程和安装流程
android app的编译过程从网上拷了一张图这张图很好的讲述了android的编译打包过程,接下来就具体的分析分析,大致分为7步:(1)aapt(Android Asset Packaging Tool,android构建工具,在android-sdk的build-tool目录下)它的主要工作就是把项目中使用到的资源文件打包成R.java文件;(2)aidl工具会将aidl接口转换为java接...原创 2018-03-09 18:31:23 · 2232 阅读 · 0 评论 -
android面试(15)-图片加载框架glide
图片加载框架有很多,但是glide是google官方推荐的,而且使用起来非常的方便而且功能十分强大;1.使用方法:Glide.with(this).load("http://baidu.com").into(new ImageView(this));简简单单的一句代码,就可以将url转换成图片放置在相应的控件中,很神奇。2.源码解析:从with方法开始:public static RequestM...原创 2018-03-01 23:15:00 · 2884 阅读 · 0 评论 -
android面试(16)-数据库存储框架greendao
在进行项目开发时,免不了要实现存储功能,也就是我们常说的数据持久化,我们知道,android五种存储方式,网络存储,数据库存储,文件存储,SharePreference和contentprovider,其中数据库存储是比较常用的一种方式,但是android提供的原生的sqlite用起来比较麻烦,还需要自己进行封装,所以今天就来讲一讲greendao;greenDAO是一种Android数据库ORM...原创 2018-03-05 17:05:13 · 1773 阅读 · 0 评论 -
android面试(18)-Android ANR与OOM异常
从这篇开始,接下来的几篇博客将会对android的异常与性能优化进行分析,今天先说ANR异常;ANR异常1.什么是ANR异常?Application Not Responding,程序无响应2.原因:在主线程中做了耗时操作说到这里,总结一下Android里哪些操作是在主线程中:(1)Activity的所有生命周期回调(2)Service默认执行在主线程(3)BroadCastReceiver的on...原创 2018-03-05 17:54:33 · 1854 阅读 · 0 评论 -
android面试(19)-Android UI卡顿
1.原理:Android渲染机制,需要在16ms中完成渲染操作,而程序进行了过多的渲染,使android系统无法在16ms内完成渲染操作,这就会导致UI卡顿;2.原因:(1)人为在UI线程中做轻微耗时操作,导致UI线程卡顿(2)布局layout过于复杂(3)同一时间内动画执行的次数过多,导致cpu或gpu负载过重(4)View过度绘制(5)View频繁的触发measure,layout,导致mea...原创 2018-03-05 18:37:01 · 586 阅读 · 0 评论 -
android面试(20)-内存管理以及内存泄漏
内存管理1.内存管理机制概述:(1)分配机制:操作系统会为每个进程分配合理的大小内存(2)回收机制:当内存不足时,需要合理回收内存;2.Android内存管理:(1)分配机制:弹性分配,刚开始会为APP分配小额内存,根据每个APP的物理内存大小分配,然后在运行时,弹性的为其分配大小;(2)回收机制:五大分级,前台->可见->服务->后台->空进程,优先级越低,被杀死的概率越...原创 2018-03-05 22:15:13 · 710 阅读 · 0 评论 -
android面试(21)-冷启动优化
在我们点击Android手机桌面APP图标时,有时候我么会发现,应用并不是直接进入闪屏页或者应用主页面,而是会有一个短暂时间的白屏才能进去。但如果我们点击Back键退出应用,在点击返回的时候却没有白屏或者白屏时间几乎不可见。为什么会出现这种情况呢?这就涉及到Android应用冷热启动的问题。1.相关概念:冷启动就是在启动应用前,系统中没有该应用的任何进程信息;暖启动时针对一些常驻内存中的应用,暖启...原创 2018-03-05 22:32:57 · 570 阅读 · 0 评论 -
Android面试题(30)-RecycleView和ListView
一、两者的缓存机制上的区别 先来说一样的地方,ListView与RecyclerView缓存机制原理大致一样,滑动的时候,离开屏幕的ItemView被回收到缓存,新的itemView加在优先获取的缓存中的,这是正常的两种类似的缓存机制。 而不同的地方在于,两者的缓存层级不同,ListView只有两层,RecycleView有四级缓存。 1. mActiveViews和mAttac...原创 2018-03-08 17:46:05 · 6159 阅读 · 1 评论 -
Android面试题(29)-surfaceView与TextureView
SurfaceView:模板代码:public class SurfaceViewText extends SurfaceView implements SurfaceHolder.Callback,Runnable{ private SurfaceHolder surfaceHolder; private boolean isDrawing; public Surfac...原创 2018-03-08 16:50:02 · 1873 阅读 · 0 评论 -
android面试(9)-handlerThread机制
今天继续异步消息机制,复习一下handlerThread;1.产生背景:我们知道,在Android开发中,我们经常会遇到耗时操作,最常见的就是网络访问,这时候,我们通常都会开启一个新的线程来进行耗时任务,非常方便,但是却也非常消耗性能,因为耗时操作可能会有多个,当你这个耗时操作完成之后,线程被销毁,新的耗时任务又来了,你又需要去创建线程,所以,多次的创建和销毁线程是非常消耗性能的,在之前的hand...原创 2018-02-28 19:19:52 · 795 阅读 · 0 评论 -
Android面试题(23)-图片的三级缓存工具类
上一篇博客已经把三级缓存原理大致都讲了,这篇博客就仅仅贴一下封装好的一个图片三级缓存工具类,代码内有注释,仅仅小记一下:首先是MyBitmapUtils,它提供了一个display方法去供外界调用:/** * 图片三级缓存工具类 * Created by PDD on 2018/3/6. */public class MyBitmapUtils { private NetWor...原创 2018-03-06 22:35:19 · 850 阅读 · 0 评论 -
Android面试题(24)-有关bitmap的操作
有关bitmap的操作一直很多,这里特此总结一下:public class BitmapTransformUtils { //根据图片uri生成Bitmap对象 public static Bitmap getBitmapByUrl(Context context, Uri uri) { if (uri == null) return nu...原创 2018-03-06 23:39:52 · 822 阅读 · 0 评论 -
Android面试题(25)-Bundle机制
Bundle的概念理解Bundle对于Android开发者来说肯定非常眼熟,它经常出现在以下场合:Activity状态数据的保存与恢复涉及到的两个回调:void onSaveInstanceState (Bundle outState)、void onCreate (Bundle savedInstanceState)Fragment的setArguments方法:void setArgument...原创 2018-03-07 11:52:38 · 6263 阅读 · 1 评论 -
Android面试题(26)-有关SharePreference的多进程
在使用SharedPreference 时,有如下一些模式:MODE_PRIVATE 私有模式,这是最常见的模式,一般情况下都使用该模式。 MODE_WORLD_READABLE,MODE_WORLD_WRITEABLE ,文件开放读写权限,不安全,已经被废弃了,google建议使用FileProvider共享文件。MODE_MULTI_PROCESS,跨进程模式,如果项目有多个进程使用同一个P...原创 2018-03-07 12:28:04 · 1279 阅读 · 0 评论 -
android面试(2)-Activity篇
今天正式开始Android篇的面试题,先从最熟悉的总结吧。Activity我相信只要学过Android开发的接触最多的就是这个组件了吧,Android四大组件的头牌,得好好说道说道。提到Activity,涉及的东西真的还挺多,什么生命周期啊,启动模式啊,进程优先级啊,别着急,一个一个来。1.概念:Android开发中提供给用户进行滑动触摸等操作的界面。2.Activity四种状态:(1)runni...原创 2018-02-27 15:52:43 · 922 阅读 · 0 评论 -
Android面试题(27)-android的事件分发机制
今天开始写一点关于view的知识,先从最基本的讲吧,android的事件分发机制,其实在我看来,android的事件分发机制在现实生活中经常能看到,所以我觉得还是很好理解的;先看看生活中常见的一种情形吧;比如说,现在你所在的公司中有一项任务被派发下来了,项目经理把项目交给你的老大,你的老大老大手下有很多人,看了看觉得你做很合适,把这个任务交给你了;你一看觉得还行,你就接下来了;这么一个小小场景大概...原创 2018-03-07 16:40:21 · 13954 阅读 · 6 评论 -
android面试(3)-Service篇
今天聊一聊Service。Service是Android里的计算型组件,它是Android中四大组件之一。提到Service,不得不说的就是它的两种启动方式了,不着急,还是一步一步来。1.概念:Service是Android程序中四大基础组件之一,它和Activity一样都是Context的子类,只不过它没有UI界面,是在后台运行的组件。2.生命周期:Service对象不能自己启动,需要通过某个A...原创 2018-02-27 17:42:03 · 752 阅读 · 0 评论 -
android面试(4)-Broadcast广播篇
咱们继续,今天复习一下Broadcast广播的相关知识,老步骤,一步步来。1.概念:Broadcast是一种广泛运用于应用程序之间传输信息的机制。从本质上来说,广播内容就是一个Intent,在Intent中携带数据。2.使用场景:(1)同一个App内具有多个进程的不同组件之间的消息通信(2)不同App内的通信3.种类:(1)普通广播:Context.sendBroadc...原创 2018-02-27 21:29:17 · 1907 阅读 · 1 评论 -
android面试(5)-WebView安全漏洞
WebView是android提供的一个非常强大的控件,具体的怎样去使用网上有很多教程,在这里就不多讲,我今天只讲讲使用WebView要注意的一些问题;1.常见的一些坑:(1)Android API level 16以及之前的版本存在远程代码执行安全漏洞,该漏洞源于程序没有正确闲置使用WebView.addJavascriptInterface()方法,远程攻击者可通过使用反射机制利用该漏洞执行任...原创 2018-02-27 22:01:04 · 742 阅读 · 0 评论 -
android面试(6)-Binder机制
一直说,要写一篇关于Binder的详解,今天终于发福利了~说到Binder,真的是头大,因为它涉及到的知识点实在是太多,所以在这里,我不准备总结太底层的东西,原因嘛,就是因为我也还没搞清楚,哈哈~~;好了,言归正传,要想了解Binder,首先得了解一些Linux内核的基础知识:1.Linux内核基础知识:(1)用户空间/内核空间:一切从简,用户空间指的是用户程序所运行的空间,内核空间是 Linux...原创 2018-02-27 23:09:43 · 7402 阅读 · 1 评论 -
Android面试题(28)-android的view加载和绘制流程
View的加载流程view布局一直贯穿于整个android应用中,不管是activity还是fragment都给我们提供了一个view依附的对象,关于view的加载我们在开发中一直使用,在接下来的几篇文章中将介绍在android中的加载机制和绘制流程并且对于基于android6.0的源码进行分析探讨。这一部分先来分析一下activity中view的加载流程。当我们打开activity时候,...原创 2018-03-08 13:36:03 · 7711 阅读 · 2 评论 -
android面试(7)-handler机制
今天开始复习Android的异步消息处理机制,我们先从最熟悉的Handler讲起,还是老套路,一步一步来吧。1.概念Android的消息机制的上层接口,通过发送和处理Message和Runnable对象来关联相对应的的线程MessageQueue;(1)可以让对应的Message和Runnable在未来的某个时间点进行相应处理(2)让自己想要处理的耗时操作放在子线程,让更新UI的操作放在主线程;2...原创 2018-02-28 17:08:32 · 2681 阅读 · 0 评论 -
android面试(8)-AsyncTask
今天讲一讲AsyncTask的基本知识。1.概念:AsyncTask是Android提供的轻量级的异步类,本质上就是一个封装了线程池和handler的异步框架;2.使用方法(1)三个参数 (A)Params:参数的类型; (B)Progress:后台任务执行进度的类型 (C)Result:后台任务的返回结果的类型(2)五个方法 (A)onPreExc...原创 2018-02-28 17:53:09 · 530 阅读 · 0 评论 -
android插件化原理
最近几年移动开发业界兴起了「 插件化技术 」的旋风,各个大厂都推出了自己的插件化框架,各种开源框架都评价自身功能优越性,令人目不暇接。随着公司业务快速发展,项目增多,开发资源却有限,如何能在有限资源内满足需求和项目的增长,同时又能快速响应问题和迭代新需求,这就是一个矛盾点。此时,插件化技术正好风生水起,去了解各个主流框架实现思路,看看能对目前工作是否有帮助,是很有必要的。主要分为以下几个部分...原创 2018-09-22 18:23:46 · 1075 阅读 · 0 评论