- 博客(19)
- 收藏
- 关注
原创 聊一聊Android中的Handler机制
前言我们经常使用的Handler就是用来更新UI,我们知道,主线程不能执行耗时操作,这样会造成UI卡顿,所以需要在子线程进行耗时的I/0操作,文件下载或者是访问网络。我们又知道,子线程不能更新UI,当在完成子线程的耗时操作之后,就需要转换到主线程来更新UI。那么,系统是怎么样切换线程,完成子线程到主线程的转换的?这就是本文要讲的重点,Android的消息机制。Android的消息机制主要指的是Handler的运行机制,Handler是Android的一个上层接口,开发过程中只需要与Handler交互
2021-03-14 12:09:48 401 2
原创 HashMap源码解析
HashMap核心属性HashMap中的核心属性已经在下图中列举出来了,这里需要注意一点,就是扩容阈值是怎么计算出来的?扩容阈值threshold = 负载因子 loadFactor*数组长度capacity插入方法put() public V put(K key, V value) { return putVal(hash(key), key, value, false, true); }put()方法其实只有对两个方法的调用,hash()和putVal()扰
2021-03-09 23:05:57 466
原创 计网基础(TCP,UDP,HTTP协议,五层协议体系结构)
一、5层协议体系结构1.各层作用应用层任务:通过应用进程间的交互来完成特定网络应用。数据单元:报文。协议:http、ftp、域名系统DNS协议等。传输层任务:负责向两台主机进程之间的通信提供通用的数据传输服务。数据单元:报文段协议:TCP,UDP协议。网络层任务:在 计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信子网。网络层的任务就是选择合适的网间路由和交换结点, 确保数据及时传送。数据单元:IP数据报(数据报)。协议:
2021-03-07 15:20:39 2038
原创 JVM基础(内存管理,GC机制,类加载)
一、内存管理机制1.1运行时数据区域1. 程序计数器作用:PC寄存器用来存储指向下一条指令的地址,也即将要执行的指令代码。由执行引擎读取下一条指令。2. Java虚拟机栈作用:主管Java程序的运行,它保存方法的局部变量,部分结果,并参与方法的调用与返回。Q:栈中存储什么?每个线程都有自己的栈,栈中的数据都是以栈帧的格式存在在这个线程上正在执行的每个方法都各自对应一个栈帧栈帧是一个内存区块,是一个数据集,维系着方法执行过程中的各种信息。Q:栈帧的内部结构是什么?栈帧中
2021-03-06 02:50:02 328
原创 Java 四则运算
前言Github地址设计实现过程数据结构使用二叉树存放四则运算式,比如1+2×3÷(4-5)+6这个表达式就可以使用以下二叉树表示,中序遍历二叉树时就可以还原四则运算。作业要求四则运算式中不能出现负数,(4-5)在二叉树中调换位置即可。2.2 实现步骤在主函数main()中输入-n,-r两个参数, 传入并执行generateMap()函数,在generateMap() 中用for循环new ArithmeticTree对象,在ArithmeticTree的构造器中,计算了四则运.
2020-10-14 21:50:57 1505 1
原创 Retrofit基本使用
前言Retrofit是Square公司开发的一款针对Android网络请求的框架,遵循Restful设计风格,底层基于OkHttp,获得许多使用者的好评,也是现在的主流网络请求框架。使用好各种框架有利于我们更快的实现项目,本文主要讲解Retrofit网络框架的使用以及各种注解的注释。Retrofit官方文档Retrofit Github一、使用以下以访问词霸api为例,URL为“http://fy.iciba.com/ajax.php?a=fy&f=auto&t=au
2020-10-14 21:41:21 1274
原创 动画|深入浅析
目录一、View动画View动画包括:补间动画、逐帧动画。1.1 补间动画作用对象:View动画效果:平移、缩放、旋转、透明度名称子类效果平移动画TranslateAnimation移动View缩放动画ScaleAnimation放大/缩小View旋转动画RotateAnimation旋转View透明度动画AlphaAnimation改变View的透明度四种动画xml代码<?xml version="1.0" en
2020-10-13 20:14:52 1725 4
原创 一个加载动画界面LoadingViewR
前言github地址预览效果使用一、添加依赖有两种方法:Gradle和Maven1.Gradle在项目的gradle.build中 allprojects { repositories { ... maven { url 'https://jitpack.io' } } }添加依赖dependencies { implementation 'com.github.Yuki-r:LoadingView-R:1.0.1' }2.使用M
2020-10-08 23:08:51 295
原创 View|工作流程
前言一、基础知识在学习View的工作原理之前,需要先学习一些基本的概念。2.1 ViewRootQ1: ViewRoot是什么?对应ViewRootImpl类。连接WindowManagerService和DecorView的纽带。Q2:ViewRoot在View绘制中有什么作用?View的三大流程(测量(measure),布局(layout),绘制(draw))均通过ViewRoot来完成。注意:ViewRoot并不属于View树的一份子。从源码实现上来看,它既非Vi
2020-09-30 21:57:33 1141 2
原创 View|体系详解
View体系一、学习脑图二、View基础2.1 什么是View?Q1:怎么理解View?View是界面层的控件的一种抽象,代表了一个控件。是android在视觉上的呈现。是所有控件是基类,可以是单个控件View可以是一组控件ViewGroup。Q2:View的重要性?View在Android中是一个十分重要的概念,虽然说View不属于四大组件,但是它的作用堪比四大组件,在开发中,Activity承担了可视化的功能,Android提供了很多基础的控件,当我们不满足于这些基础控件
2020-09-26 22:16:41 1482
原创 浅谈IPC|Binder
前言在学习IPC机制之前,我会问自己几个问题,并且希望在书中找到问题的答案,这些问题就是:IPC是什么?为什么要学IPC?怎么进行IPC?下面是我这篇博文的学习脑图,方便读者更快的找到自己想要了解的知识点。一、IPC简介1.1什么是IPCIPC是Inter-Process Communication的缩写,含义为进程间通信或者跨进程通信,是指两个进程之间进行数据交换的过程。看到这里,需要先了解一下进程、线程以及它们的关系。进程:一般指一个执行单元,在PC和移动设备上指一个
2020-09-12 21:39:57 2684 1
原创 鸿蒙OS,运行第一个“hello world”
一、前言近些来,华为鸿蒙系统一直是热门话题,就在昨天,备受瞩目的“2020华为开发者大会”上,华为消费者业务发布了一系列智能终端领域的创新成果。华为消费者业务CEO余承东表示,华为将全面开放自身的核心技术和软硬件能力,与开发者们共同驱动全场景智慧生态的蓬勃发展。HarmonyOs 官方文档:https://developer.harmonyos.com/cn/documentation也可看官方文档自行运行helloWorld,这篇文章主要记录我的安装使用过程。二、下载官网https:
2020-09-11 21:47:46 19798 17
原创 浅谈Activity生命周期
读书笔记|Activity的生命周期和启动模式学习清单:Activity的生命周期Activity的启动模式IntentFilter的匹配规则1.1Activity的生命周期全面分析1.1.1典型情况下的生命周期分析正常情况下,Activity常用生命周期有以下七种(1)onCreate:表示Activity正在被创建,生命周期的第一个方法。(2)onRestart:表示Activity正在重新启动。(3)onStart:表示Activity正在被启动。(4)onResume:表示
2020-09-09 20:03:30 705
原创 Android View的滑动冲突解决方法
View的滑动冲突1.常见的滑动冲突场景2.滑动冲突的处理规则3.滑动冲突的解决方式1.外部拦截法2.内部拦截法1.常见的滑动冲突场景常见的滑动冲突有以下三种:场景A:外部滑动与内部滑动不一致的滑动冲突;场景B:外部滑动与内部滑动一致的滑动冲突;场景C:场景AB的嵌套;A .这个情况常见于ViewPager和Fragment中LisetView的使用,然而ViewPager和内部...
2020-04-16 14:32:38 466 1
原创 Android View的事件分发机制简单理解
前言在开发过程中遇到的滑动冲突,例如ViewPager和横向RecyclerView,滑动ViewPager发现RecyclerView滑动不了,或者ViewPager和ListView,能滑动ListView确发现水平方向的滑动失效。滑动冲突的解决方法都是基于事件分发机制,本文我将对近期学到的事件分发机制内容进行理解和总结。1.MotionEvent要理解View的事件分发机制,就需要先了...
2020-04-10 23:46:07 820 1
原创 Android Navigation的简单使用方法
前言上一篇文章记录了底部导航栏BottomNavigationBar的简单使用,这篇文章将会将BottomNavigationBar+Navigation结合使用,点击导航栏不同按钮显示不同的页面,这个功能实现也可以用ViewPager实现。想要使用navigation,需要Androidstudio的版本至少在3.2以上。如Androidstudio版本过低,需更新完版本再使用。使用前依然需...
2020-04-04 19:47:03 4256
原创 Android 底部导航栏BottomNavigationBar简单使用
前言相信大家都有接触到安卓底部导航栏的使用,点击底部不同的图标显示不同的页面实现导航功能。而实现这种功能有很多的方法,有原始线性布局LinearLayout + TextView,按钮组RadioGroup + RadioButton,还有BottomNavigationBar实现。最近学习了BottomNavigationBar使用,写这篇文章记录一下学习过程。实现如图:使用之前添加依赖...
2020-04-04 16:53:26 2476
原创 平衡二叉树
平衡二叉树的定义在学习平衡二叉树之前,需要先了解什么是平衡二叉树,平衡二叉树有哪些特点?平衡二叉树或者是棵空树,或者具有下列性质的二叉查找树:它的左子树和右子树都是平衡二叉树,且左子树和右子树的高度之差的绝对值不超过1,平衡因子的值只可能为-1,0,1。平衡二叉树中最需要注意的就是平衡问题,只要有一个结点的平衡因子的绝对值大于1,那么这棵树就失去了平衡,在插入,删除操作中都可能会出现失衡情况,此...
2020-01-02 23:18:25 535
原创 as添加simplexml依赖方法
添加simplexml依赖最近项目需要用到simplexml,在网上看了很多篇文章,遇到了这个@Root注解需要添加依赖,网上有多种写法,但是我的as试了之后只有这个写法编译没有错误,这里贴一下依赖的方法,避免找依赖浪费不必要的时间 implementation('com.squareup.retrofit2:converter-simplexml:2.1.0') { excl...
2019-11-01 21:32:39 376 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人