
面试问题
平.Sir
一个有态度的程序员
展开
-
我能想到的设计模式在项目中的应用
看了rxjava后,了解到我们平常使用到到设计模式有很多种,例如: EventBus的使用,用到了单例模式,单例模式,顾名思义就是整个项目中只有一个单独的实例存在。单例模式分为懒汉式和饿汉式,懒汉式在多线程的应用中会有线程安全的隐患存在,饿汉式就不会存在线程安全的问题。适配器模式:listview、gridview和recyclerview的适配器,都是用到了适配器模式。观察者模式:例如事件的点击原创 2016-11-28 21:53:06 · 620 阅读 · 0 评论 -
Android性能优化总述
1、Android性能优化包括:布局优化、绘制优化、内存优化、响应速度优化、bitmap优化、线程优化等2、布局优化的思想很简单,就是尽量减少布局文件的层级,减少Android绘制时的工作量布局优化的方法:1、删除布局中无用的控件和层级,有选择性地使用性能较低的ViewGroup。例如:布局中既可以使用LinearLayout又可以使用RelativeLayout的时候,采用LinearLayou...原创 2018-04-10 21:47:07 · 195 阅读 · 0 评论 -
Android WebView深度学习一
1、WebView的状态//激活WebView为活跃状态,能正常执行网页的响应webView.onResume() ;//当页面被失去焦点被切换到后台不可见状态,需要执行onPause//通过onPause动作通知内核暂停所有的动作,比如DOM的解析、plugin的执行、JavaScript执行。webView.onPause();//当应用程序(存在webview)被切换到后台时,...原创 2018-04-10 22:07:07 · 232 阅读 · 0 评论 -
Android WebView深度学习二 通过webview与js进行交互
1、Android调用JS1.1 通过webview的loadUrl方法1.2 通过webview的evaluateJavaScript方法 此方法在Android 4.4及以上才支持,向下兼容性较差2、JS调用Android2.1 通过webview的addJavaScriptInterface()方法进行对象映射2.2 通过webviewClient的shouldOverrideUrlLoa...原创 2018-04-11 09:15:03 · 403 阅读 · 1 评论 -
图片加载框架Glide的使用及源码分析
1、对比图片加载框架Glide和Picasso的对比:Picasso:compile 'com.squareup.picasso:picasso:2.5.1'Glide:compile 'com.github.bumptech.glide:glide:3.7.0'Glide默认加载图片是RGB_565的,而Picasso默认加载的图片是ARGB_8888的,会比Glide更占用内存,但是图片质量要...原创 2018-04-11 11:39:11 · 453 阅读 · 0 评论 -
Android xml解析方式
常用的xml解析方式有三种:SAX解析、pull解析和DOM解析。Android推荐的解析方式是pull解析pull解析小巧灵便,解析速度快,是Android推荐的解析方式try { //得到xml解析器 XmlPullParser pullParser = Xml.newPullParser(); InputStream is = getAssets().open("xx...原创 2018-04-11 16:47:27 · 278 阅读 · 0 评论 -
Android Binder机制
1、binder是什么Binder的英文原意是“胶水”的意思,其实很形像了。Binder模糊了进程边界,淡化了进程间通信的过程,整个系统仿佛运行于同一个面向对象的程序之中。形形色色的Binder对象以及星罗棋布的引用仿佛粘接各个应用程序的胶水。要理解binder当然要从Linux说起。2、Linux基础为了保护进程空间不被别的进程破坏或者干扰,Linux中的进程是相互独立的,也就是所谓的进程隔离。...原创 2018-04-11 17:27:43 · 172 阅读 · 0 评论 -
Android 常见的设计模式的SOLID原则
1、SOLID原则1.1 单一职责原则:定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。解决方案:遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改类T1时,不会使职责P2发生...原创 2018-04-11 21:19:46 · 542 阅读 · 0 评论 -
Android 常见的设计模式
单例模式:分为懒汉式和饿汉式EventBus就是使用的单例模式,双重锁+volatile。工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。在工厂方法模式中,核心的工厂类不再负责所有的对象的创建,而是将具体创建的工作交给子类去做。这个核心类则摇身一变,成为了一个抽象工厂角色,仅负责给出具体工厂子类必须实现的接口,而不接触哪一个类应当被实例化这...原创 2018-04-11 21:24:14 · 153 阅读 · 0 评论 -
Android图片加载框架的对比
参考链接https://blog.youkuaiyun.com/u013134722/article/details/56676078参考链接https://www.cnblogs.com/fightingchendan/p/5972985.html参考链接https://www.jianshu.com/p/3ac30878c72c转载 2018-04-11 21:56:40 · 228 阅读 · 0 评论 -
android加载超清无损大图--BitmapRegionDecoder类
1、BitmapRegionDecoderBitmapRegionDecoder主要用于显示图片的某一块矩形区域,如果你需要显示某个图片的指定区域,那么这个类非常合适。对于该类的用法,非常简单,既然是显示图片的某一块区域,那么至少只需要一个方法去设置图片;一个方法传入显示的区域即可;详见:BitmapRegionDecoder提供了一系列的newInstance方法来构造对象,支持传入文件路径,文...原创 2018-04-10 09:20:34 · 1207 阅读 · 0 评论 -
图片缓存机制--LruCache内存缓存
我们可以通过下面的代码看出每个应用程序最高可用内存是多少int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);因此在展示高分辨率图片的时候,最好先将图片进行压缩。压缩后的图片大小应该和用来展示它的控件大小相近,在一个很小的ImageView上显示一张超大的图片不会带来任何视觉上的好处,但却会占用我们相当多宝贵的内存,而且在性...转载 2018-04-09 23:26:09 · 866 阅读 · 0 评论 -
Android内存优化全解
要学习Android的内存优化,首先要了解Java虚拟机。Android基于的是Dalvik虚拟机,简称DVM,与Java虚拟机JVM并不一样。另外,Android 4.4以后基于的是ART虚拟机;1、DVM:DVM是基于寄存器的,它没有基于栈的虚拟机在拷贝数据而使用的大量的出入栈指令,同时指令更紧凑更简洁。执行的字节码是.dex形式的,DVM会用dx工具将所有的.class文件转换为一个.dex...原创 2017-10-22 12:13:07 · 270 阅读 · 0 评论 -
Android MVP模式
说到MVP模式,先来回顾一下MVC模式:model-view-controlAndroid中的MVC的角色定义分别为:模型层(Model) 我们针对业务模型,建立的数据结构和相关的类,就可以理解为Model,Model是与View无关,而与业务相关的。视图层(View) 一般采用xml文件或者java代码进行界面的描述,也可以使用javascript+html等原创 2017-10-22 12:48:40 · 286 阅读 · 0 评论 -
Android事件分发机制
Android的事件传递对应着三个阶段:分发、拦截和消费,分发:对应的方法是dispatchTouchevent方法,在Android系统中,所有的触摸事件都是通过这个方法来分发的。返回值为true表示事件被当前视图消费掉,返回super.方法表示继续分发该事件,如果当前视图是viewgroup及其子类,则会调用onInterceptTouchEvent方法来判断是否需要拦截事件拦截:对应原创 2017-10-23 19:22:04 · 198 阅读 · 0 评论 -
Android View的绘制流程
首先,Android UI管理系统的层级关系为:activity{phoneWindow[decorView(titleview,contentview)]},phonewindow是activity中最基本的窗口系统,是activity和view交互的接口,decorview本质上是一个framelayout,包含了titleview和contentview绘制首先是从根视图viewroot原创 2017-10-23 19:58:10 · 191 阅读 · 0 评论 -
Android 动画原理
Android 动画分为属性动画、补间动画tweened animation和帧动画frame animation帧动画就是将传统的图片连贯地一帧一帧的进行播放补间动画又有四种形式:分别是 alpha(淡入淡出),translate(位移),scale(缩放大小),rotate(旋转),也可以用set标签将多个动画结合起来,intarpolator可以控制动画播放的变化速率,也就是动画原创 2017-10-23 18:46:42 · 155 阅读 · 0 评论 -
Android ANR产生的原因及定位分析
只有当App的UI线程响应超时才会引起ANR,超时一般有两种:1、当前的事件没有机会得到处理,例如UI线程正在响应另一个事件,当前事件由于某种原因被阻塞了;2、当前的事件正在处理,但是耗时太长没能及时完成。典型的ANR问题场景:1、UI线程存在耗时操作,例如UI线程中存在网络请求、数据库操作或者文件操作等。Android 4.0以后,如果在UI线程进行网络操作会直接报异常2、UI线程等原创 2017-10-23 21:07:20 · 690 阅读 · 0 评论 -
View的事件分发机制
废话不多说,直接上代码我的布局为 viewgroup包含viewgroup里面嵌套view,布局层级关系如图:每个view都重写了DispatchtouchEvent、OnInterceptTouchEvent、OnTouchEvent方法。其中,非ViewGroup的view没有OnInterceptTouchEvent方法现在我们点击最外层的view,事件的响应顺序如下:最外层的viewgro...原创 2017-11-16 21:17:49 · 191 阅读 · 0 评论 -
handler运行机制
Handler就是解决线程和线程之间的通信的。handler的使用场景:1)主线程中使用、2)子线程中使用handler1)主线程中使用示例:public class MainActivity extends AppCompatActivity { private Handler handler = new Handler(){ @Override pub...原创 2018-04-09 20:36:04 · 596 阅读 · 0 评论 -
图片缓存机制-DiskLruCache磁盘缓存
1、磁盘缓存 DiskLruCache参考链接 https://blog.youkuaiyun.com/guolin_blog/article/details/28863651记录总结:防止多图OOM的核心解决思路就是使用LruCache技术。但LruCache只是管理了内存中图片的存储与释放,如果图片从内存中被移除的话,那么又需要从网络上重新加载一次图片,这显然非常耗时。因此使用到了DiskLruCache...转载 2018-04-09 21:49:39 · 596 阅读 · 0 评论 -
TCP/UDP协议
参考链接http://blog.chinaunix.net/uid-26833883-id-3627644.html 一、TCP协议:TCP协议是面向连接、保证高可靠性(数据无丢失、数据无失序、数据无错误、数据无重复到达)传输层协议。1、三次握手过程a.请求端(通常称为客户)发送一个SYN段指明客户打算连接的服务器的端口,以及初始序号(ISN,在这个例子中为1415531521)。这个SYN段为报...原创 2018-04-11 22:59:25 · 190 阅读 · 0 评论