02 2022 档案

摘要:前言 由于之前项目搭建的是 MVP 架构,由RxJava + Glide + OKHttp + Retrofit + Dagger 等开源框架组合而成,之前也都是停留在使用层面上,没有深入的研究,最近打算把它们全部攻下。 介绍 Retrofit 跟之前介绍的 OKHttp 都是来自 Square 公 阅读全文
posted @ 2022-02-14 10:47 契阔 阅读(75) 评论(0) 推荐(0) 编辑
摘要:前言 由于之前项目搭建的是 MVP 架构,由RxJava + Glide + OKHttp + Retrofit + Dagger 等开源框架组合而成,之前也都是停留在使用层面上,没有深入的研究,最近打算把它们全部攻下。 Http 缓存基础 1. 什么是缓存 缓存是一种保存资源副本并在下次请求时直接 阅读全文
posted @ 2022-02-14 10:46 契阔 阅读(165) 评论(0) 推荐(0) 编辑
摘要:前言 由于之前项目搭建的是 MVP 架构,由RxJava + Glide + OKHttp + Retrofit + Dagger 等开源框架组合而成,之前也都是停留在使用层面上,没有深入的研究,最近打算把它们全部攻下 interceptor 拦截器 在上一篇 从源码的角度分析 OKHttp3 (一 阅读全文
posted @ 2022-02-14 10:44 契阔 阅读(180) 评论(0) 推荐(0) 编辑
摘要:前言 由于之前项目搭建的是 MVP 框架,由RxJava + Glide + OKHttp + Retrofit + Dagger 等开源框架组合而成,之前也都是停留在使用层面上,没有深入的研究,最近打算把它们全部攻下 介绍 OKHttp 出至于 移动支付 Square 公司, 适用于 Androi 阅读全文
posted @ 2022-02-14 10:43 契阔 阅读(148) 评论(0) 推荐(0) 编辑
摘要:介绍 RxJava 出来已经有几年了,我相信大家多多少少都有使用过 RxJava (简单来说:它就是一个实现异步操作的库),它强大的操作变换符和线程切换等,使我们的业务逻辑操作起来更加简单明了。我使用 Rxjava 有 2 年左右了吧,当初还是看扔物线 的 给 Android 开发者的 RxJava 阅读全文
posted @ 2022-02-14 10:41 契阔 阅读(101) 评论(0) 推荐(0) 编辑
摘要:介绍 在上一篇中,我们知道了 Glide 框架的最基本的执行流程,那么只知道基本执行流程,这显然是不够的,我们要深挖 Glide 框架的细节处理原理,比如缓存机制,图片处理等,这一篇我们就一起去探索 Glide 的缓存机制。 Glide 缓存机制可以说是设计的非常完美,考虑的非常周全,下面就以一张表 阅读全文
posted @ 2022-02-14 10:39 契阔 阅读(415) 评论(0) 推荐(0) 编辑
摘要:概述 相信大家在项目上应该都有用过或者了解过 Glide 图片加载框架吧,那么在用的时候是不是发现 Glide 一行代码就能对图片进行下载 → 缓存 → 显示 ,那么 Glide 内部它到底是怎么实现的?下面我们就来分析下 Glide 执行流程,脑袋里面先有一个对 Glide 源码总体执行流程的认识 阅读全文
posted @ 2022-02-14 10:36 契阔 阅读(137) 评论(0) 推荐(0) 编辑
摘要:一、概述 设计模式是解决问题的方案,学习现有的设计模式可以做到经验复用。 拥有设计模式词汇,在沟通时就能用更少的词汇来讨论,并且不需要了解底层细节。 二、创建型 1. 单例(Singleton) Intent 确保一个类只有一个实例,并提供该实例的全局访问点。 Class Diagram 使用一个私 阅读全文
posted @ 2022-02-12 16:01 契阔 阅读(56) 评论(0) 推荐(0) 编辑
摘要:1.ListView 中图片错位的问题是如何产生的? 图片错位原理: 如果我们只是简单显示list中数据,而没用convertview的复用机制和异步操作,就不会产生图片错位;重用convertview但没用异步,也不会有错位现象。但我们的项目中list一般都会用,不然会很卡。 在上图中,我们能看到 阅读全文
posted @ 2022-02-12 15:42 契阔 阅读(196) 评论(0) 推荐(0) 编辑
摘要:###网络 目前大多数应用中都会使用一些开源网络库,对于此我们不仅要知道是什么,而且也要知道为什么。 协议 一篇文章带你详解 HTTP 协议(网络协议篇一) 一篇文章带你熟悉 TCP/IP 协议(网络协议篇二) HTTPS系列干货(一):HTTPS 原理详解 TCP、UDP、IP 协议分析 关于 T 阅读全文
posted @ 2022-02-12 15:05 契阔 阅读(64) 评论(0) 推荐(0) 编辑
摘要:Dagger 在项目中怎么灵活使用Dagger? | 掘金技术征文 详解 Dagger2 系列,原来 Dagger2 如此简单 听说你还不会用Dagger2?Dagger2 For Android最佳实践教程 Dagger2 深入理解 我们为什么要把 Dagger2,MVP 以及 RxJava 引入 阅读全文
posted @ 2022-02-12 15:04 契阔 阅读(42) 评论(0) 推荐(0) 编辑
摘要:MVP MVPArms官方首发一键生成组件化,体验纯傻瓜式组件化开发 MVPArms官方快速组件化方案开源,来自5K star的信赖 传统MVP用在项目中是真的方便还是累赘? 一文带你全面了解MVC、MVP、MVVM模式(含实例讲解) MVP 开发框架-开发最快的框架 改造 Android 官方架构 阅读全文
posted @ 2022-02-12 15:03 契阔 阅读(42) 评论(0) 推荐(0) 编辑
摘要:启动 面试官: 说一下你做过哪些性能优化? 支付宝客户端架构解析:Android 客户端启动速度优化之「垃圾回收」 性能优化(一)APP 启动优化(不敢说秒开,但是最终优化完真不到 1s) Android App 启动优化全记录 Android 中如何计算 App 的启动时间 都9102年了,And 阅读全文
posted @ 2022-02-12 15:02 契阔 阅读(155) 评论(0) 推荐(0) 编辑
摘要:##前言 Android图片框架很多,比如:Glide、Picaso、Fresco,但是说框架之前先要了解图片的三级缓存 为什么要使用三级缓存 如今的 Android App 经常会需要网络交互,通过网络获取图片是再正常不过的事了 假如每次启动的时候都从网络拉取图片的话,势必会消耗很多流量。在当前的 阅读全文
posted @ 2022-02-12 15:00 契阔 阅读(133) 评论(0) 推荐(0) 编辑
摘要:基础 基本会遵从 Activity ⇒ ViewGroup ⇒ View 的顺序进行事件分发,然后通过调用 onTouchEvent() 方法进行事件的处理。我们在项目中一般会对 MotionEvent.ACTION_DOWN,MotionEvent.ACTION_UP,MotionEvent.AC 阅读全文
posted @ 2022-02-12 14:53 契阔 阅读(46) 评论(0) 推荐(0) 编辑
摘要:转载Android面试题之Gradle配置篇 0. Gradle是什么 Gradle是一个自动化构建工具 兼容Maven等仓库 基于Groovy的特定领域语言来声明名目设置 1. GradleWraper Gradle Wrapper是一个脚本文件 它会在没有安装Gradle的情况下为我们下载Gra 阅读全文
posted @ 2022-02-12 14:07 契阔 阅读(111) 评论(0) 推荐(0) 编辑
摘要:前言 AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各 阅读全文
posted @ 2022-02-12 13:58 契阔 阅读(25) 评论(0) 推荐(0) 编辑
摘要:1. Android为每个应用程序分配的内存大小是多少 android程序内存一般限制在16M,也有的是24M。近几年手机发展较快,一般都会分配两百兆左右,和具体机型有关。 2. 更新UI方式 Activity.runOnUiThread(Runnable) View.post(Runnable), 阅读全文
posted @ 2022-02-12 13:53 契阔 阅读(76) 评论(0) 推荐(0) 编辑
摘要:1. Android 使用 HTTPS 2. Jar和Aar的区别 Jar包里面只有代码,aar里面不光有代码还包括资源文件,比如 drawable 文件,xml资源文件。对于一些不常变动的 Android Library,我们可以直接引用 aar,加快编译速度。 3. Merge、ViewStub 阅读全文
posted @ 2022-02-12 13:51 契阔 阅读(48) 评论(0) 推荐(0) 编辑
摘要:1. android中进程的优先级? 1. 前台进程: 即与用户正在交互的Activity或者Activity用到的Service等,如果系统内存不足时前台进程是最晚被杀死的 2. 可见进程: 可以是处于暂停状态(onPause)的Activity或者绑定在其上的Service,即被用户可见,但由于 阅读全文
posted @ 2022-02-12 13:49 契阔 阅读(50) 评论(0) 推荐(0) 编辑
摘要:1. HttpClient和HttpConnection的区别? Http Client适用于web浏览器,拥有大量灵活的API,实现起来比较稳定,且其功能比较丰富,提供了很多工具,封装了http的请求头,参数,内容体,响应,还有一些高级功能,代理、COOKIE、鉴权、压缩、连接池的处理。 但是,正 阅读全文
posted @ 2022-02-12 13:22 契阔 阅读(31) 评论(0) 推荐(0) 编辑
摘要:1. Bunder传递对象为什么需要序列化?Serialzable和Parcelable的区别? 因为bundle传递数据时只支持基本数据类型,所以在传递对象时需要序列化转换成可存储或可传输的本质状态(字节流)。序列化后的对象可以在网络、IPC(比如启动另一个进程的Activity、Service和 阅读全文
posted @ 2022-02-12 13:19 契阔 阅读(216) 评论(0) 推荐(0) 编辑
摘要:1. 数据库升级增加表和删除表都不涉及数据迁移,但是修改表涉及到对原有数据进行迁移。升级的方法如下所示: 将现有表命名为临时表。 创建新表。 将临时表的数据导入新表。 删除临时表。 如果是跨版本数据库升级,可以有两种方式,如下所示: 逐级升级,确定相邻版本与现在版本的差别,V1升级到V2,V2升级到 阅读全文
posted @ 2022-02-12 13:17 契阔 阅读(32) 评论(0) 推荐(0) 编辑
摘要:一、为什么要适配 为了保证用户获得一致的用户体验效果,使得某一元素在Android不同尺寸、不同分辨率的、不同系统的手机上具备相同的显示效果,能够保持界面上的效果一致,我们需要对各种手机屏幕进行适配! Android系统碎片化:基于Google原生系统,小米定制的MIUI、魅族定制的flyme、华为 阅读全文
posted @ 2022-02-12 13:17 契阔 阅读(207) 评论(0) 推荐(0) 编辑
摘要:1.AsyncTask的缺陷和问题,说说他的原理。 AsyncTask是什么? AsyncTask是一种轻量级的异步任务类,它可以在线程池中执行后台任务,然后把执行的进度和最终结果传递给主线程并在主线程中更新UI。 AsyncTask是一个抽象的泛型类,它提供了Params、Progress和Res 阅读全文
posted @ 2022-02-12 13:16 契阔 阅读(43) 评论(0) 推荐(0) 编辑
摘要:1.动画 tween 补间动画。通过指定View的初末状态和变化方式,对View的内容完成一系列的图形变换来实现动画效果。 Alpha, Scale ,Translate, Rotate。 frame 帧动画。AnimationDrawable控制animation-list.xml布局 Prope 阅读全文
posted @ 2022-02-12 13:15 契阔 阅读(100) 评论(0) 推荐(0) 编辑
摘要:1. Canvas.save()跟Canvas.restore()的调用时机 save:用来保存Canvas的状态。save之后,可以调用Canvas的平移、放缩、旋转、错切、裁剪等操作。 restore:用来恢复Canvas之前保存的状态。防止save后对Canvas执行的操作对后续的绘制有影响。 阅读全文
posted @ 2022-02-12 13:14 契阔 阅读(82) 评论(0) 推荐(0) 编辑
摘要:1.Bitmap 使用时候注意什么? 1、要选择合适的图片规格(bitmap类型): ALPHA_8 1byte ARGB_4444 2byte ARGB_8888 4byte RGB_565 2byte 2、降低采样率。BitmapFactory.Options 参数inSampleSize的使用 阅读全文
posted @ 2022-02-12 13:09 契阔 阅读(72) 评论(0) 推荐(0) 编辑
摘要:前言 Android消息循环流程图如下所示: 主要涉及的角色如下所示: message:消息。 MessageQueue:消息队列,负责消息的存储与管理,负责管理由 Handler 发送过来的 Message。读取会自动删除消息,单链表维护,插入和删除上有优势。在其next()方法中会无限循环,不断 阅读全文
posted @ 2022-02-12 12:02 契阔 阅读(75) 评论(0) 推荐(0) 编辑
摘要:1. Fragment状态保存 Fragment状态保存入口: 1、Activity的状态保存, 在Activity的onSaveInstanceState()里, 调用了FragmentManger的saveAllState()方法, 其中会对mActive中各个Fragment的实例状态和Vie 阅读全文
posted @ 2022-02-12 11:59 契阔 阅读(38) 评论(0) 推荐(0) 编辑
摘要:1. Context 1、Activity和Service以及Application的Context是不一样的,Activity继承自ContextThemeWraper.其他的继承自ContextWrapper。 2、每一个Activity和Service以及Application的Context 阅读全文
posted @ 2022-02-12 11:58 契阔 阅读(44) 评论(0) 推荐(0) 编辑
摘要:1. 程序A能否接收到程序B的广播? 能,使用全局的BroadCastRecevier能进行跨进程通信,但是注意它只能被动接收广播。此外,LocalBroadCastRecevier只限于本进程的广播间通信。 2. 广播传输的数据是否有限制,是多少,为什么要限制? Intent在传递数据时是有大小限 阅读全文
posted @ 2022-02-12 11:57 契阔 阅读(73) 评论(0) 推荐(0) 编辑
摘要:1. ContentProvider使用方法。 进行跨进程通信,实现进程间的数据交互和共享。通过Context 中 getContentResolver() 获得实例,通过 Uri匹配进行数据的增删改查。ContentProvider使用表的形式来组织数据,无论数据的来源是什么,ConentProv 阅读全文
posted @ 2022-02-12 11:56 契阔 阅读(484) 评论(0) 推荐(0) 编辑
摘要:1. 怎么在Service中创建Dialog对话框? 1.在我们取得Dialog对象后,需给它设置类型,即: dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT) <span class="copy-code 阅读全文
posted @ 2022-02-12 11:54 契阔 阅读(165) 评论(0) 推荐(0) 编辑
摘要:1、OnLowMemory 和 OnTrimMemory 的比较 【参考】 1、OnLowMemory 被回调时,已经没有后台进程;而 onTrimMemory 被回调时,还有后台进程。 2、OnLowMemory 是在最后一个后台进程被杀时调用,一般情况是 low memory killer 杀进 阅读全文
posted @ 2022-02-12 11:51 契阔 阅读(103) 评论(0) 推荐(0) 编辑
摘要:1、Activity和Fragment生命周期有哪些? 2、横竖屏切换时候Activity的生命周期 不设置Activity的android:configChanges时,切屏会重新回调各个生命周期,切横屏时会执行一次,切竖屏时会执行两次。 设置Activity的android:configChan 阅读全文
posted @ 2022-02-12 11:31 契阔 阅读(337) 评论(0) 推荐(0) 编辑
摘要:##前言 ANR全称:Application Not Responding,也就是应用程序无响应。 1.原因 Android系统中,ActivityManagerService(简称AMS)和WindowManagerService(简称WMS)会检测App的响应时间,如果App在特定时间无法相应屏 阅读全文
posted @ 2022-02-12 11:05 契阔 阅读(418) 评论(0) 推荐(0) 编辑
摘要:register IntentFilter filter = new IntentFilter(); filter.addAction(PROVIDERS_CHANGED_ACTION); filter.addAction(ConnectivityManager.CONNECTIVITY_ACTIO 阅读全文
posted @ 2022-02-12 10:54 契阔 阅读(286) 评论(0) 推荐(0) 编辑
摘要:代码形式 透明: alpha ObjectAnimator animator = ObjectAnimator.ofFloat(imageView, "alpha", 1f, 0f, 1f); animator.setDuration(2000); animator.start(); 旋转: rot 阅读全文
posted @ 2022-02-12 10:52 契阔 阅读(28) 评论(0) 推荐(0) 编辑
摘要:一、网络状态 Android市场的逐渐降温及形成稳定,其实说明了Android的发展走向稳重成熟的阶段。 除却最开始的功能实现,到如今的用户体验至上,Android研发面临的挑战却从未冷却。基于大多数APP均是以APP为数据展示框架,实现客户与服务器数据交互,网络扮演了十分重要的角色。 网络状态,除 阅读全文
posted @ 2022-02-12 10:49 契阔 阅读(646) 评论(0) 推荐(0) 编辑
摘要:前言 出现原因:当insert数据中有表情时发生。而这些表情是按照4个字节一个单位进行编码的,而我们使用的utf-8编码在mysql数据库中默认是按照3个字节一个单位进行编码的. 一.修改mysql的配置文件mysql/bin/my.ini, 添加如下内容 注意:是添加内容 [client] def 阅读全文
posted @ 2022-02-12 10:31 契阔 阅读(233) 评论(0) 推荐(0) 编辑
摘要:1.微信小程序的前期准备 到微信公众平台 查看小程序的开发文档 安装微信开发工具选择Windows 64的系统 2.安装NodeJs 参考Windows Nodejs 安装教程 访问 官方地址 下载并安装 Windows Installer (.msi 64) 配置环境变量: NODEJS_HOME 阅读全文
posted @ 2022-02-12 10:24 契阔 阅读(186) 评论(0) 推荐(0) 编辑
摘要:创建数据库utf-8 CREATE DATABASE dbname DEFAULT CHARSET utf8 COLLATE utf8_general_ci 登录mysql mysql -uroot -p 删除数据库 drop database database; 删除表 drop table ta 阅读全文
posted @ 2022-02-12 10:13 契阔 阅读(89) 评论(0) 推荐(0) 编辑
摘要:前言 有些情况,我们需要让测试服务器的本地数据库能被外部访问,方便本地数据库可视化工具对其数据的管理。但是,这也带来了一些风险,若被黑客知道了你的服务器IP和数据库账号密码,则可能被其攻击,导致数据库数据被清除,请务必谨慎开启远程连接。 修改/etc/mysql/my.conf 默认情况下,mysq 阅读全文
posted @ 2022-02-12 09:54 契阔 阅读(198) 评论(0) 推荐(0) 编辑
摘要:一.创建用户 命令 CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 说明 username:你将创建的用户名 host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用 阅读全文
posted @ 2022-02-12 09:49 契阔 阅读(117) 评论(0) 推荐(0) 编辑
摘要:参考链接:Android性能优化总结 #前言 在Android应用优化方面,我们主要从以下4个方面进行优化: 稳定(内存溢出、崩溃) 流畅(卡顿) 耗损(耗电、流量、网络) 安装包(APK瘦身) #1.稳定优化 01.内存优化 由于Android应用的沙箱机制,每个应用所分配的内存大小是有限度的,内 阅读全文
posted @ 2022-02-10 15:24 契阔 阅读(491) 评论(0) 推荐(0) 编辑

阅读目录(Content)

此页目录为空

点击右上角即可分享
微信分享提示