![](https://img-blog.csdnimg.cn/20200311220046147.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Android进阶
文章平均质量分 84
Android进阶必备知识,逐步扩充中...
别急,还差一行代码
放弃不难,但坚持一定很酷!
展开
-
RecycleView滑动、缓存、复用源码分析与优化
RecycleView滑动原理、缓存复用原理RecycleView如何判读一屏有多少个View?每加载一个Item进入RecycleView中,就将当前Item高度加到RecycleView中,直到当前bottom大于等于屏幕高度原创 2022-09-06 21:07:58 · 1200 阅读 · 0 评论 -
Android 进阶——MultiDex分包与动态加载原理剖析
多dex主要是为了解决什么问题?多dex是什么时候被加载的,如何加载?多dex有哪些问题,主要解决方案如何?原创 2022-04-14 20:24:11 · 3013 阅读 · 0 评论 -
Android进阶——组件化开发实践(二)
一个新的组件的基本配置,调试准备原创 2022-03-15 17:31:08 · 4005 阅读 · 0 评论 -
Android进阶——组件化开发实践(一)
一、组件化的意义随着Android 项目代码和结构逐渐复杂,维护成本会指数型上升,通常我们会利用Android Studio自带的Module去拆分项目代码。但这种拆分显然需要基于一定逻辑和结构,目前主流的拆分思路有两种:分别是①基于业务拆分;②基于功能拆分。前者通常会将一个App划分为若干模块,每一个模块对应一个Module。如一个短视频APP(类似某音)通常会被拆分为:首页、登录模块、视频模块、广告模块、直播模块…但是这样划分会带来一个问题:模块与模块之前会存在重复功能,比如视频模块和直播模块中会同原创 2022-03-11 19:36:31 · 6234 阅读 · 0 评论 -
Android进阶——线程治理与线程池
1. 为什么需要线程池程序中不管是网络请求、文件IO、数据库操作等其他耗时操作都需要异步进行,而由于线程创建和销毁都需要一定的开销,如果每次执行异步任务都重新创建一个线程,并在完成任务后直接进行销毁,这会消耗大量资源。JAVA在1.5中提供了Executor,通过将任务的创建和执行解耦, 如下图所示即通过Runnable和Callable接口实现延时启动/异步启动任务并通过Future返回执行结果整个Executor最核心的就是ThreadPoolExecutor,我们首先来看看他的原理;2. T原创 2022-03-01 21:19:21 · 2894 阅读 · 1 评论 -
Android中onSaveInstanceState()和onRestoreInstanceState()使用总结
一、 onSaveInstanceState()调用时机与使用二、onRestoreInstanceState()调用时机与使用三、其他注意点3.1. onRestoreInstanceState()与onCreate()在做数据恢复时的区别:在进行Activity数据恢复时,二者都会接收到Bundle形式的数据,其区别主要在于,因为onRestoreInstanceState()并非所有场景下都会调用,所以onCreate接收到的Bundle可能为空(当onRestoreInstanceState原创 2021-06-15 21:27:18 · 583 阅读 · 5 评论 -
Java基础知识点总结系列(六)——Java反射机制与动态代理
一、反射机制反射给程序提供了一种在程序运行时动态获取类的属性、构造器、方法,并且不需要生成对象,且不受到访问符的限制(可以获取私有属性和方法);反射作用①二、动态代理原创 2020-11-02 22:09:52 · 227 阅读 · 0 评论 -
百度校招——移动软件研发工程师一面,二面,三面经历(已拿Offer)
一面:算法:① 用两个栈实现一个队列;② 手写一个单例模式;③ 印象中还手撕了一个算法题,忘了是啥了。。。。。Java和Android:二面算法:①. 现在有一个函数,有70%概率输出0,30%概率输出1,现在请你实现一个函数,保证输出0和1的概率都是50%(口述思路和原理);②. 输入一个纯数字字符串,转换为ip,输出所有可能转换的情况;Java和Android三面...原创 2020-11-12 16:54:33 · 1710 阅读 · 3 评论 -
Activity启动流程分析
1. 用户点击应用图标;2. 通知ActivityManagerService启动入口Activity;3. 此时AMS若发现应用程序未启动,则会通知Zygote进程孵化进程,然后在这个dilvik应用程序里执行ActivityThread的main()方法,这个方法会返回Context;3. 应用程序通知AMS已启动,AMS会保存该应用进程的一个代理对象(ApplicationThreadProxy),并通过代理对象控制应用进程;4. AMS通知应用进程创建入口Activity实例并执行生命周期。原创 2020-09-29 16:05:31 · 155 阅读 · 0 评论 -
从零开始理解Android下View(一)----学习笔记(参考郭霖大神博客)
参考链接:郭神博客Android下Activity中加载布局一般是通过setContentView()方法实现的,而setContentView()其实是通过调用LayoutInflater实现的。要研究LayoutInflater原理,首先就要获取它的实例,有两种方法可以拿到LayoutInflater的实例://第一种方法LayoutInflater inflater = LayoutInflater.from(context);//第二种方法LayoutInflater inflater转载 2020-09-15 20:55:14 · 217 阅读 · 0 评论 -
我的技术堆栈
持续更新中。。。一、 日志输出框架:Logger框架:极其优雅的Logger日志输出项目地址:https://github.com/orhanobut/logger使用步骤:添加依赖:implementation 'com.orhanobut:logger:2.2.0'初始化Logger适配器(在项目中通常放在Application中初始化)Logger.addLogAd...原创 2019-04-27 17:10:04 · 2230 阅读 · 0 评论 -
Android ListView实现QQ空间界面(说说内包含图片、视频、点赞、评论、转发功能),结尾附源码
前端时间刚好需要做一个类似于QQ空间的社区分享功能,说说内容包含文字(话题、内容)、视频、图片,还需包含点赞,评论,位置信息等功能。就采用LIstview做了一个,先来看下效果:...原创 2019-12-26 14:34:17 · 3948 阅读 · 5 评论 -
Android开发Bug记录及解决方法(二)————物联网相关
此博客长期更新,记录开发过程中遇到的一些坑,欢迎各路开发大神在评论区补充!情况描述:APP安装后部分手机扫描不到指定蓝牙设备报错信息:无报错出错原因:部分机型扫描蓝牙设备时需要位置信息支持(经测试,小米、一加均需要位置信息)解决方案:添加申请位置权限...原创 2019-10-25 19:59:51 · 1319 阅读 · 0 评论 -
Material Design实战(一)——常用自定义View
登录页面输入框效果图:原创 2019-05-20 12:24:18 · 1639 阅读 · 0 评论 -
intent-filter匹配规则,是时候了解一波了
一个intent-filter中action、category、data的数量均可超过一个,在进行匹配时,可以理解为这些aciton、category、data会随机组合,只要匹配其中一组即可,换言之,只要intent中的action、category、data均在intent-filter中即可;intent-filter在一个Activity中可以存在多个,进行匹配时,只需要完全匹配...原创 2019-04-27 19:54:57 · 3045 阅读 · 0 评论 -
深入代码层面理解Android下View绘制流程(一)——Measure
这篇博客主要和大家深入探讨一下Android下View的绘制流程,首先来看一下Android下时间的三种响应方法1.原创 2019-03-24 11:57:56 · 2772 阅读 · 0 评论 -
Android下自己实现依赖注入框架
在博客开始之前,我们先来介绍几个东西。什么是注解?注解简而言之就是对程序加上的一种标签,这个标签本身对源代码没有任何影响,我没有扯淡,注解本身对源代码确实没任何影响,实际上,是通过**APT(Annotation Processing Tool)**对程序中的注解进行检测并执行一些操作,比如检测到@Deprecated注解时,认为这个函数已被淘汰,于是APT会在函数上加上删除线,提醒开发者此...原创 2019-05-23 20:57:48 · 2708 阅读 · 0 评论 -
基于Java从零开始实现设计模式(三)——观察者模式
首先先来介绍一下什么是观察者模式:观察者模式是一种行为型模式,也被叫做发布/订阅模式,其内容就是通过定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。观察者模式主要解决的就是在易用和低耦合的前提下实现对象状态的同步。其实这种设计模式在Android下运用早已十分广泛,如控件的监听、数据与UI的同步、Broadcast以及其他一些框架RxJa...原创 2019-07-01 15:53:45 · 2052 阅读 · 0 评论 -
Android页面设计(一)——简洁美观的登录页面
前几天做个APP,需要用到登录页面,无奈本人艺术细胞太差,于是去GitHub逛了一圈,没有找到特别满意的,于是只能自己设计了一个,将就着用一下,后续会继续扩充。大家有比较好的设计方案欢迎评论区分享!废话不多说,先来看下效果代码及介绍如下首先添加依赖,在Module的build.gradle文件中的dependencies节点下添加如下依赖,注意design版本要和你项目一致; ...原创 2019-07-06 00:18:15 · 32179 阅读 · 5 评论 -
Android MVP架构理解与实例
在开始这篇博客之前,我们先来探讨几个问题:1. 为什么要用MVP?传统开发中,View(包括Activity、Fragment及其子类)作为APP的功能的分割单元完成了过多任务,包括UI绘制与刷新、页面逻辑、动画渲染,这就导致一些复杂的页面动辄数千行,这就导致维护和升级的成本越来越高,代码牵一发而动全身。为了解决这个问题,我们提出了MVP的思想。2. MVP如何解决这个View代码过于庞大的...原创 2019-05-22 22:18:38 · 3839 阅读 · 1 评论