摘要: 一、概述 设计模式是解决问题的方案,学习现有的设计模式可以做到经验复用。 拥有设计模式词汇,在沟通时就能用更少的词汇来讨论,并且不需要了解底层细节。 二、创建型 1. 单例(Singleton) Intent 确保一个类只有一个实例,并提供该实例的全局访问点。 Class Diagram 使用一个私 阅读全文
posted @ 2022-02-12 16:01 契阔 阅读(48) 评论(0) 推荐(0) 编辑
摘要: 1.ListView 中图片错位的问题是如何产生的? 图片错位原理: 如果我们只是简单显示list中数据,而没用convertview的复用机制和异步操作,就不会产生图片错位;重用convertview但没用异步,也不会有错位现象。但我们的项目中list一般都会用,不然会很卡。 在上图中,我们能看到 阅读全文
posted @ 2022-02-12 15:42 契阔 阅读(89) 评论(0) 推荐(0) 编辑
摘要: ###网络 目前大多数应用中都会使用一些开源网络库,对于此我们不仅要知道是什么,而且也要知道为什么。 协议 一篇文章带你详解 HTTP 协议(网络协议篇一) 一篇文章带你熟悉 TCP/IP 协议(网络协议篇二) HTTPS系列干货(一):HTTPS 原理详解 TCP、UDP、IP 协议分析 关于 T 阅读全文
posted @ 2022-02-12 15:05 契阔 阅读(57) 评论(0) 推荐(0) 编辑
摘要: Dagger 在项目中怎么灵活使用Dagger? | 掘金技术征文 详解 Dagger2 系列,原来 Dagger2 如此简单 听说你还不会用Dagger2?Dagger2 For Android最佳实践教程 Dagger2 深入理解 我们为什么要把 Dagger2,MVP 以及 RxJava 引入 阅读全文
posted @ 2022-02-12 15:04 契阔 阅读(34) 评论(0) 推荐(0) 编辑
摘要: MVP MVPArms官方首发一键生成组件化,体验纯傻瓜式组件化开发 MVPArms官方快速组件化方案开源,来自5K star的信赖 传统MVP用在项目中是真的方便还是累赘? 一文带你全面了解MVC、MVP、MVVM模式(含实例讲解) MVP 开发框架-开发最快的框架 改造 Android 官方架构 阅读全文
posted @ 2022-02-12 15:03 契阔 阅读(38) 评论(0) 推荐(0) 编辑
摘要: 启动 面试官: 说一下你做过哪些性能优化? 支付宝客户端架构解析:Android 客户端启动速度优化之「垃圾回收」 性能优化(一)APP 启动优化(不敢说秒开,但是最终优化完真不到 1s) Android App 启动优化全记录 Android 中如何计算 App 的启动时间 都9102年了,And 阅读全文
posted @ 2022-02-12 15:02 契阔 阅读(139) 评论(0) 推荐(0) 编辑
摘要: ##前言 Android图片框架很多,比如:Glide、Picaso、Fresco,但是说框架之前先要了解图片的三级缓存 为什么要使用三级缓存 如今的 Android App 经常会需要网络交互,通过网络获取图片是再正常不过的事了 假如每次启动的时候都从网络拉取图片的话,势必会消耗很多流量。在当前的 阅读全文
posted @ 2022-02-12 15:00 契阔 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 基础 基本会遵从 Activity ⇒ ViewGroup ⇒ View 的顺序进行事件分发,然后通过调用 onTouchEvent() 方法进行事件的处理。我们在项目中一般会对 MotionEvent.ACTION_DOWN,MotionEvent.ACTION_UP,MotionEvent.AC 阅读全文
posted @ 2022-02-12 14:53 契阔 阅读(41) 评论(0) 推荐(0) 编辑
摘要: 转载Android面试题之Gradle配置篇 0. Gradle是什么 Gradle是一个自动化构建工具 兼容Maven等仓库 基于Groovy的特定领域语言来声明名目设置 1. GradleWraper Gradle Wrapper是一个脚本文件 它会在没有安装Gradle的情况下为我们下载Gra 阅读全文
posted @ 2022-02-12 14:07 契阔 阅读(96) 评论(0) 推荐(0) 编辑
摘要: 前言 AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各 阅读全文
posted @ 2022-02-12 13:58 契阔 阅读(21) 评论(0) 推荐(0) 编辑
摘要: 1. Android为每个应用程序分配的内存大小是多少 android程序内存一般限制在16M,也有的是24M。近几年手机发展较快,一般都会分配两百兆左右,和具体机型有关。 2. 更新UI方式 Activity.runOnUiThread(Runnable) View.post(Runnable), 阅读全文
posted @ 2022-02-12 13:53 契阔 阅读(41) 评论(0) 推荐(0) 编辑
摘要: 1. Android 使用 HTTPS 2. Jar和Aar的区别 Jar包里面只有代码,aar里面不光有代码还包括资源文件,比如 drawable 文件,xml资源文件。对于一些不常变动的 Android Library,我们可以直接引用 aar,加快编译速度。 3. Merge、ViewStub 阅读全文
posted @ 2022-02-12 13:51 契阔 阅读(40) 评论(0) 推荐(0) 编辑
摘要: 1. android中进程的优先级? 1. 前台进程: 即与用户正在交互的Activity或者Activity用到的Service等,如果系统内存不足时前台进程是最晚被杀死的 2. 可见进程: 可以是处于暂停状态(onPause)的Activity或者绑定在其上的Service,即被用户可见,但由于 阅读全文
posted @ 2022-02-12 13:49 契阔 阅读(39) 评论(0) 推荐(0) 编辑
摘要: 1. HttpClient和HttpConnection的区别? Http Client适用于web浏览器,拥有大量灵活的API,实现起来比较稳定,且其功能比较丰富,提供了很多工具,封装了http的请求头,参数,内容体,响应,还有一些高级功能,代理、COOKIE、鉴权、压缩、连接池的处理。 但是,正 阅读全文
posted @ 2022-02-12 13:22 契阔 阅读(24) 评论(0) 推荐(0) 编辑
摘要: 1. Bunder传递对象为什么需要序列化?Serialzable和Parcelable的区别? 因为bundle传递数据时只支持基本数据类型,所以在传递对象时需要序列化转换成可存储或可传输的本质状态(字节流)。序列化后的对象可以在网络、IPC(比如启动另一个进程的Activity、Service和 阅读全文
posted @ 2022-02-12 13:19 契阔 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 1. 数据库升级增加表和删除表都不涉及数据迁移,但是修改表涉及到对原有数据进行迁移。升级的方法如下所示: 将现有表命名为临时表。 创建新表。 将临时表的数据导入新表。 删除临时表。 如果是跨版本数据库升级,可以有两种方式,如下所示: 逐级升级,确定相邻版本与现在版本的差别,V1升级到V2,V2升级到 阅读全文
posted @ 2022-02-12 13:17 契阔 阅读(29) 评论(0) 推荐(0) 编辑
摘要: 一、为什么要适配 为了保证用户获得一致的用户体验效果,使得某一元素在Android不同尺寸、不同分辨率的、不同系统的手机上具备相同的显示效果,能够保持界面上的效果一致,我们需要对各种手机屏幕进行适配! Android系统碎片化:基于Google原生系统,小米定制的MIUI、魅族定制的flyme、华为 阅读全文
posted @ 2022-02-12 13:17 契阔 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 1.AsyncTask的缺陷和问题,说说他的原理。 AsyncTask是什么? AsyncTask是一种轻量级的异步任务类,它可以在线程池中执行后台任务,然后把执行的进度和最终结果传递给主线程并在主线程中更新UI。 AsyncTask是一个抽象的泛型类,它提供了Params、Progress和Res 阅读全文
posted @ 2022-02-12 13:16 契阔 阅读(39) 评论(0) 推荐(0) 编辑
摘要: 1.动画 tween 补间动画。通过指定View的初末状态和变化方式,对View的内容完成一系列的图形变换来实现动画效果。 Alpha, Scale ,Translate, Rotate。 frame 帧动画。AnimationDrawable控制animation-list.xml布局 Prope 阅读全文
posted @ 2022-02-12 13:15 契阔 阅读(86) 评论(0) 推荐(0) 编辑
摘要: 1. Canvas.save()跟Canvas.restore()的调用时机 save:用来保存Canvas的状态。save之后,可以调用Canvas的平移、放缩、旋转、错切、裁剪等操作。 restore:用来恢复Canvas之前保存的状态。防止save后对Canvas执行的操作对后续的绘制有影响。 阅读全文
posted @ 2022-02-12 13:14 契阔 阅读(71) 评论(0) 推荐(0) 编辑