自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(62)
  • 资源 (4)
  • 收藏
  • 关注

原创 JetPack Room数据库组件使用方式

JetPack Room数据库组件使用方式1.Room 简介Goolge官方是这样描述的Room 在 SQLite 上提供了一个抽象层,以便在充分利用 SQLite 的强大功能的同时,能够流畅地访问数据库。处理大量结构化数据的应用可极大地受益于在本地保留这些数据。最常见的用例是缓存相关数据。这样,当设备无法访问网络时,用户仍可在离线状态下浏览相应内容。设备重新连接到网络后,用户发起的所有内容更改都会同步到服务器。由于 Room 负责为您处理这些问题,因此我们强烈建议您使用 Room(而不是 S

2021-11-06 16:32:34 680

原创 Android文件解压【已测通】

废话不多说,直接上代码:/** * 文件解压 * @param zipFileString 压缩文件路径 * @param folderPath 解压输出路径 * @throws IOException */ public static void UnZipFolder(String zipFileString, String folderPath) throws IOException { ZipFile zfile = new

2021-08-23 19:07:38 240

原创 Kotlin学习笔记(三)---面向对象(3)

Kotlin学习笔记(三)—面向对象(3)13.数据类在Koltin中,在类前添加关键字data可以将类转换为数据类。Koltin的数据类可以默认帮我们实现一些例如toString,equals等方法,在使用data class的对象时,可以使用data class 对象的componentN()方法区访问对象的第N个属性。也可以使用(arg1,arg2)= data的方式去访问data对象的属性 。但相反,Kotlin数据类有一些与生俱来的缺陷不可被继承不能声明无参数构造函数使用noa

2021-06-17 23:53:13 247 1

原创 Kotlin学习笔记(三)---面向对象(2)

Kotlin学习笔记(三)—面向对象(2)7.类及其成员的可见性我们直接用一张表格和Java语言类比:JavaKotlinprivateprivateprotectedprotected-default(包内可见)internal(模块内可见)-publicpublic8.object在Kotlin中,object代表只有一个实例的类,即通常所说的单例。用object关键字定义的类可以继承父类,也可以实现接口,但不能自定义构造函数,通过Ko

2021-06-17 23:52:39 208 3

原创 Kotlin学习笔记(三)---面向对象(1)

Kotlin学习笔记(3)—面向对象????????1.接口1.1 接口定义Kotlin接口的定义方法与Java基本一致。接口并没有实现特定的功能,而是定义了一些标准。比如我们现实中的插座,国家规定了插座应该执行什么样的标准,然后各个厂商比如公牛,小米等等根据这个标准制造出了自己的产品。但这些不同的产品都符合同一个标准,因此可以统称它们为插座。也就是说,实现了什么接口就是什么1.2 接口的使用我们举个????://输入设备接口interface InputDevice { fun a

2021-06-17 23:51:47 289 2

原创 MQTT.JS学习笔记(不包含5.0版本)

MQTT.JS学习笔记(不包含5.0版本)MQTT中的QoS等级MQTT设计了一套保证消息稳定传输的机制,包括消息应答、存储和重传。在这套机制下,提供了三种不同层次QoS(Quality of Service):QoS0,At most once,至多一次;QoS1,At least once,至少一次;QoS2,Exactly once,确保只有一次。QoS 是消息的发送方(Sender)和接受方(Receiver)之间达成的一个协议:QoS0 代表,Sender 发送的一条消息,R

2021-01-28 16:22:38 2138 1

原创 Flutter端与Native端通信

Flutter笔记-Flutter端与Native端通信1. 使用场景当逻辑在flutter中的实现方式较为困难,或者已经有现成的java代码实现了该逻辑的时候,则可以通过flutter调用java代码来减少开发工作量,Flutter与Android提供了一个名为Channel的接口去实现通信。2. 相关知识2.1 Channe整体架构图2.2 Channel分类BasicMessageChannel:flutter和平台端进行消息数据交换时候,可以使用。MethodChannel:

2020-12-30 17:16:06 354 1

原创 [已解决] Error: Cannot download ‘https://start.spring.io/starter.zip?

使用idea快速创建springboot项目时会出现连接不到服务器的情况,进行诸多尝试后得到以下几个方法:设置代理 :进入到IDEA的setting,搜索 HTTP Proxy,选择Auto-detect proxy settings,点击最下面的Check connection弹出如下的输入框,输入地址https://start.spring.io点击ok,如果successful证明连接成功,重新生成一次,完美生成springboot项目1.将上方的URL替换为:https://start.sp

2020-11-10 10:15:30 17715 20

原创 Kotlin学习笔记(2)---程序的逻辑控制

1

2020-07-13 10:33:18 238

原创 Kotlin学习笔记(1)---变量与函数

Kotlin学习笔记(1)—变量与函数..前言作为一个安卓开发者,如果在2020年还没有学会Kotlin的话,就代表已经OUT了。没错本人已经OUT了,所以趁这段时间有空,赶紧学习一下这门GOOGLE推荐的安卓开发语言。作为一个开发者,Kotlin作为一个新语言,最大的优势就是100%与java兼容。Kotlin可以直接调用java编写的代码,也可以无缝使用java的第三方开源库。这样一来,就是的Kotlin不仅拥有属于自己的特色,而且还继承的java的财富。本系列文章全部会类比java来学习。关

2020-07-04 11:48:53 219

原创 计算机网络面试要点【万字精华图文并茂,助你直取offer】

在面试过程中,难免会有面试官问你计算机网络的问题。本片文章将用问答的形式来总结面试中常见的计算机网络的问题。Q1:HTTP和HTTPS的区别?答:端口不同,HTTP是80端口,HTTPS是443端口传输方式不同,HTTP是明文传输,HTTPS是通过SSL加密过后再进行传输HTTPS需要CA证书或者是企业自己制作的证书,HTTP不需要HTTP是无状态的:协议对客户端没有状态存储,对事物...

2020-05-07 11:46:18 376

原创 设计模式之美------单例模式【一篇学会单例模式写法】

单例模式顾名思义,单例模式的意思就是只有1个实例的对象。就像天天上的太阳和月亮只有一个一样。单例模式有很多种写法,在这里我们一一对比:1.懒汉模式//懒汉模式public class Singleton1 { private static Singleton1 instance; private Singleton1() {}; public static Sin...

2020-04-18 18:38:47 221

原创 面试必问:HashMap,HashTable,ConcurrentHashMap以及Hash冲突的解决

HashMap,HashTable以及Hash冲突的解决HashMapHash冲突的几种解决方法一.开放地址法使用开放地址法进行建立散列表时,建表前须将表中所有单元中存储的数据置空1.线性探测法:如果当前hash值发生冲突,就在此hash值的基础上加一个单位,直到不发生hash冲突。基本思想:假设散列表 T[0,m-1],从初始地址D开始探查,则最长的探查序列为:D,D+1,D+2...

2020-04-17 19:40:40 954

原创 安卓中的Socket通信和Https通信中证书的校验方法

Socket通信socket是一个常见的网络协议。这篇文章我们用一个简单的聊天室的例子,来实践一下TCP和UDP在socket中的应用。案例一:UDP聊天室这个案例中,有两个主要的类DatagramSocket:代表UDP协议的Socket,DatagramSocket本身只是码头,不维护状态,不能产生IO流,它的唯一作用就是接收和发送数据报。DatagramPacket:代表数据报文...

2020-04-07 16:38:22 804

原创 【小王的安卓之路】自定义控件开发(二)之“淡黄的长裙,蓬松的头发,你想要的样子我都有”

自定义控件开发当一些组成比较复杂的控件被要求能够响应事件,并需频繁使用时,不妨将它创建成一个自定义控件。这里以一个登陆界面的文本框为例。一.创建过程1.1 创建控件属性xml文件在res/values文件夹下新建values resource file内容如下:<?xml version="1.0" encoding="utf-8"?><resources>......

2020-04-01 13:48:23 196

原创 设计模式之美——建造者模式【超清晰讲解】

设计模式之美——建造者模式...前言:我们在日常coding中经常遇到需要创建一个对象,有时候有些对象会非常复杂,由好几个对象组成。如果我们一个一个new出来,然后再组装难免有些不太灵活。建造者模式就是为了解决这一痛点。写这篇文章之前我看了很多讲解建造者模式的例子,可能是找的比较少,没找到特别透彻的例子。接下来我会尽我所能给大家说清楚,到底怎么才是建造者模式。(英文不太好,可能有拼写...

2020-03-26 19:34:52 270

原创 安卓View绘制的相关知识点

View绘制相关知识点...一.view树的绘制流程大体上分为:measure------>layout------>draw这三个步骤二.measure方法:参数1.ViewGroup.layoutParams:这个参数表示了子视图的大小,一般有三种类型:match_parent:表示是子视图想和父控件一样大(不包括padding值)warp_content:整个...

2020-03-16 15:40:23 167

原创 安卓Fragment相关知识点详解(面试必问!!!)

Fragment面试详解一.添加fragment到Activity的两种方法….1.静态添加Fragment到Avtivity:1.1编写xml布局文件2.编写java类继承Fragment类3.在刚才编写的java类中重写onCreateView方法,然后利用 View view = inflater.inflate(R.layout.xxx,null);获取到view对象,...

2020-03-14 21:02:51 169

原创 图解Service的两种启动方式

图解Service的两种启动方式众所周知,Service有两种启动方式...一.在新进程启动Service在新进程启动Service共分为5个步骤:step1:App向AMS发送一个启动Service的消息,从AIDL视角看是这个样子的:图中client代表了App端,APP通过AMN/AMP将要启动的service信息发送给了AMS。Step2:AMS检查Service...

2020-03-06 11:51:46 1136

原创 Synchronized的使用和简单解析

Synchronized的使用和简单解析1.使用场景:当多个线程并发地对同一个临界资源进行操作的时候,我们就会发现代码不同步,导致结果有可能是我们预期之外的。比如下面这个例子:public class Async implements Runnable { //临界变量 static int i=0; public static void increase() { fo...

2020-03-01 19:57:59 211

原创 JAVA的四种引用方式

JAVA的四种引用方式1.强弱软虚在java中,引用类型分为四种。强引用,弱引用,软引用,虚引用。这种起名的方式也包含了内存回收的某些规则。2.强引用2.1强引用的使用方法:_1.直接new出一个对象Person person = new Person();2.2强引用的特点:2.2.1.强引用可以直接访问对象2.2.2.javai虚拟机在进行内存回收的时候,即使抛出了OOM错...

2020-02-28 21:40:23 218

原创 WebView相关方法解析

WebView相关操作...1.加载网页的四种方式2.控制网页的前进和后退3.Webview状态管理4.webview相关常用类简介5.控制JS运行6.控制网页的大小和缩放7.缓存策略8.WebViewClient9.资源请求回调10.地址拦截11.WebViewClient发生错误时的处理12.WebChromeClient处理网页信息13.android调用JS...

2020-02-22 20:27:06 332

原创 安卓动态权限申请-手写一个权限请求模板

在安卓开发中,有些权限我们可以写在Manifest.xml文件中去申请权限,另外有一些权限在安卓6.0之后需要我们在用到这些权限的时候动态的向用户去申请。具体的分类看这里 :Android权限申请哪些需要动态申请我们现在看一下怎么在代码中动态的进行权限申请。 if(ContextCompat.checkSelfPermission(this, Manifest.permissio...

2020-02-22 13:26:03 647

原创 Flutter入门第二步-路由管理

Flutter入门第二步-路由管理说到路由,我们在学习计算机网络的时候也学过一个路由,不过此路由非彼路由。不过单从功能含义的角度来说,两者还是比较相似的。路由(Route)在移动开发中通常指页面(Page),这跟web开发中单页应用的Route概念意义是相同的,Route在Android中通常指一个Activity。Flutter中的路由管理和原生开发类似,无论是Android还是iOS,导...

2020-02-17 16:32:30 392

原创 If the home property is specified, the routes table cannot include an entry for "/", since it would

If the home property is specified, the routes table cannot include an entry for “/”, since it would be redundant.在flutter项目中进行路由跳转时,如果出现这个提示,然后模拟器出现这样:它的意思就是默认的路由重复了,我们在MyApp的build方法中,将home:…这条注释掉即...

2020-02-16 21:20:16 1805 1

原创 Flutter入门第一步-Dart语言入门(三)

Flutter入门第一步-Dart语言入门(二).1.Dart中的异步支持1.1Future:Future与JavaScript中的Promise非常相似,表示一个异步操作的最终完成(或失败)及其结果值的表示。简单来说,它就是用于处理异步操作的,异步处理成功了就执行成功的操作,异步处理失败了就捕获错误或者停止后续操作。一个Future只会对应一个结果,要么成功,要么失败。.1.2 Fu...

2020-02-15 18:13:40 173

原创 Flutter入门第一步-Dart语言入门(二)

Flutter入门第一步-Dart语言入门(二)1.Dart中的操作符1.1取整void main() {var a = 7 ;var b = 2;print(a~/b);//输出1}1.2级联操作当我们对单一对象进行一系列的操作时,就可以使用级联。在dart中,级联可以用 ..来进行级联。如下例:class Person { String name; S...

2020-02-13 21:08:57 356

原创 Flutter入门第一步-Dart语言入门(一)

Flutter入门第一步-Dart语言入门最近学习flutter的时候,看了下官方文档里的示例代码,看得我一头雾水,就像是雾里看花(此处@东北酱)。在我个人看来,Dart语言的语法有点像是java和js的结合体,如果熟悉java的胖友学起来应该不会太费力。所以磨刀不误砍柴工,我先学一点基础的Dart语言,然后再开始我的fluter之旅。1.工具我个人使用了一个在线的编译工具 DartPad,...

2020-02-12 21:38:03 410

原创 Flutter环境搭建以及诸多准备

写在前面:近些年flutter慢慢变得火热了起来,连阿里都拿咸鱼来试水。我们这些安卓开发者也应该与时俱进地学一学,更新一下自己的技术栈,。

2020-02-10 21:17:02 187

原创 安卓ORM框架GreenDao的基本使用方法

安卓ORM框架GreenDao的基本使用方法1.项目引入2.建立数据库1.项目引入在build.gradle(Project)的dependencies里加入classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin在build.gradle(APP)上方加入apply plugin: 'org.gre...

2020-02-06 20:16:20 291

原创 图片加载框架Glide使用解析及其高级用法

图片加载框架Glide的使用解析及其高级用法1.Glide项目简介2.普通图片加载方法与Glide图片加载对比3.Glide的高级使用方法(一)4.Glide的高级使用方法(二)..1.Glide项目简介Glide在安卓中不算是一个新的技术,但却是使用的比较火热的图片加载框架。在GitHuB上有28.2K颗星也体现了广大开发者对Glide的喜爱.2.普通图片加载方法与Glide...

2020-02-05 20:52:29 914

原创 RecyclerView使用解析

0.RecyclerView的特性1.LayoutManager类2.Adapter类3.ViewHolder类4.配置不同的LayoutManager5.为item配置点击事件6.RecyclerView中插入和删除数据...0.RecyclerView的特性:灵活可以配置可以自定义并且可以重复使用的Item高度解耦..1.LayoutManager类:La...

2020-02-04 21:34:50 1972

原创 EventBus的小tips

1. EventBus的线程模式2.黏性事件3. 配置混淆规则....0.EventBus的简介一个Android事件发布/订阅轻量级框架,功能:通过解耦发布者和订阅者简化Android事件传递 [2] EventBus可以代替Android传统的Intent,Handler,Broadcast或接口函数,在Fragment,Activity,Service线程之间传递数据,执...

2020-02-03 17:34:10 197

原创 Dagger2使用方法及源码解析(二)

接上篇文章4.Dagger2使用方法拓展:_4.1Dagger2实现单例模式:在java中,实现单例模式的方法有很多,如:利用 synchronized锁实现橘子类的单例public class Orange{ private static Orange instance; private Orange() { } public static Or...

2019-12-20 10:48:07 158

原创 【已解决】ERROR: Unable to resolve dependency for ':app@debug/compileClasspath'..或者Cause: unable to find

当我们给项目添加新的依赖时,有时会提示我们:ERROR: Unable to resolve dependency for ‘:app@debug/compileClasspath’: Could not resolve …或者:Cause: unable to find valid certification path to requested target我们的代码并没有错。只是Gra...

2019-12-11 10:41:53 2373 1

原创 安卓国际化【多语言以及不同语言下的图片适配】

前言:在一些场合中,比如即将到来的冬奥会,我们做的APP就可能需要面对别的国家的用户,这个时候如果你的APP只支持中文那就太尴尬了。废话不多说:一.多语言适配1.安卓7.0之前: 1.1.第一步: private void chooseLanguage(Locale locale) { Resources resources = getResources(); ...

2019-12-11 10:19:14 1592

原创 Dagger2使用方法及源码解析(一)

Dagger2使用方法及源码解析1.Dagger2简介2.Dagger2项目依赖3.Dagger2基础使用方法4.Dagger2基础源码分析...1.Dagger2简介 :Dagger是一种对Java和Android的静态的,编译时依赖注入(Dependency Injection)框架。它主要用来解决很多由于大量使用反射reflection而带来的开发和性能问题。总而言之,Da...

2019-12-11 09:40:38 285

原创 JAVA接口回调的两篇文章

我本来也是一知半解,看了这两片文章明白了很多。码在这,以后想不起来了可以看看:文章一:接口回调本质就这么简单文章二:Java接口回调一般用法两片文章讲的很好,都看完应该就明白了,配合代码食用效果更佳!...

2019-11-06 11:03:26 227

原创 【已解决】安卓9.0中网络访问出现异常

一.原因在安卓9.0及以上版本中,默认不支持http请求,所以需要手动配置。二.配置方法:1.在res目录下新建一个叫做xml的目录,然后新建一个叫做network_security_config的xml文件,内容为:<?xml version="1.0" encoding="UTF-8"?>-<network-security-config>&lt...

2019-10-08 09:59:18 698

原创 【已解决】MalformedJsonException:Use JsonReader.setLenient(true) to accept malformed JSON at line 3 colum

原因:gradle3.5.0版本对GSON不兼容解决方案:将buid.gradle文件中的classpatch改成3.4.2版本

2019-09-04 09:41:25 3069

GlideTest.zip

Glide的基本使用以及进阶使用方法。包括Glide与原生图片方法的对比,Glide的使用。Generated API 的使用以及关于Glide的一些常见方法

2020-02-05

RecycleViewTest.zip

RecyclerView基本操作代码,涉及RecyclerView基本操作的Demo。不同的布局样式及实现分析,点击事件的实现,数据的增加和删除。代码中有大量的注解,配合博客学习更加有效

2020-02-04

BroadCastTest.zip 安卓动态注册广播接收器demo(含注释)

安卓动态注册广播接收器demo(含注释),有动态注册广播接收器,发送自定义广播,接收系统广播等案例

2019-10-22

解决安卓9.0网络请求问题的配置文件 xml.zip

用于解决安卓9.0无法进行http网络请求的问题,解压后放在res目录下即可

2019-10-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除