自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

One X的博客

永远相信美好的事情即将发生!

  • 博客(93)
  • 资源 (5)
  • 收藏
  • 关注

原创 Android Jetpack架构-Paging自定义上拉加载更多

Android Jetpack架构组件-Lifecycle使用Android Jetpack架构组件-LiveData使用Android Jetpack架构组件-ViewModel的使用及原理Android Jetpack架构组件-Paging介绍及实践Android Jetpack架构组件-Room基本使用Android Jetpack架构组件-Room数据库查询艺术Andro...

2020-05-05 19:11:46 1582 1

原创 Android Jetpack架构-WorkManager使用篇

一. 定义:作为 Android Jetpack 中的新组件,WorkManager 负责用来管理后台任务,说简单点则和异步任务Task或者 Service 作用一样,都可以处理异步任务或后台任务。核心类介绍先来介绍下WorkManager中涉及到的想关类Worker任务的执行者,是一个抽象类,需要继承它实现要执行的任务。WorkRequest指定让哪个 Woker 执行任务...

2020-04-30 19:00:48 1287

原创 Android Jetpack架构组件-Room升级

Android Jetpack架构组件-Room基本使用Android Jetpack架构组件-Room数据库查询艺术在Android中使用任何一种数据库框架,少不了应用的迭代和数据库的升级,那么Room的该如何正确的升级?一、Room数据库升级第一步:增加version数据,及版本号增加@Database(entities = [Cheese::class, User::class...

2020-04-02 11:52:32 1071

原创 Android Jetpack架构组件-Room数据库查询艺术

目录一、Room 中的数据库关系查询1.1、 一对一关系1.2、 一对多关系1.3、多对多关系二、配合Rxjava的使用三、配合LiveData的使用四、配合Paging框架的使用五、结语在阅读本文前,需要先了解Room框架的使用,入门可点击笔者Android Jetpack架构组件-Room基本使用文章一、Room 中的数据库关系查询设计一个关系型数据库很重要的一部分是将数据拆分成具有...

2020-04-01 17:56:07 3580

原创 Android Jetpack架构组件-Room基本使用

目录一、简介二、如何使用2.1、添加依赖2.2、定义Database类2.3、定义Dao2.4、定义Entity2.5、代码中使用三、核心类属性讲解3.1、@Entity注解属性3.2、@Query注解四、结语一、简介Room有三个主要的组件:Database、Dao、Entity数据库(Database):你可以使用该组件创建数据库的持有者。该注解定义了实体列表,该类的内容定义了数据库...

2020-03-31 18:59:54 1352

原创 Android Jetpack架构组件-ViewModel的使用及原理

目录一、什么是ViewModel二、如何使用ViewModel三、ViewModel 的生命周期四、在 Fragment 之间共享数据五、ViewModel原理一、什么是ViewModelViewModel顾名思义,是以感知生命周期的形式来存储和管理视图相关的数据。ViewModel主要有以下的特点:1.当Activity被销毁时,我们可以使用onSaveInstanceState()方法恢...

2020-03-25 22:47:36 2334 2

原创 Android Jetpack架构组件-LiveData使用

目录一、定义二、优势:三、使用liveData3.1、 LiveData的基本使用3.2、 更改LiveData中的数据3.3、 Transformations.switchMap()3.4、扩展LiveData对象四、总结谷歌推出的LiveData和RxJava类似,也是基于观察者,你可以认为LiveData是轻量级的RxJava。起初LiveData并不被看好,随着谷歌的大力推广,Live...

2020-03-25 15:38:48 889

原创 Android Jetpack架构组件-Lifecycle使用

生命周期感知型组件可执行操作来响应另一个组件(如 Activity 和 Fragment)的生命周期状态的变化。这些组件有助于您写出更有条理且往往更精简的代码,这样的代码更易于维护。一种常见的模式是在 Activity 和 Fragment 的生命周期方法中实现依赖组件的操作。但是,这种模式会导致代码条理性很差而且会扩散错误。通过使用生命周期感知型组件,您可以将依赖组件的代码从生命周期方法移入组...

2020-03-23 18:15:16 897

原创 Android Jetpack架构组件-Paging介绍及实践

目录Android 列表分页组件Paging的设计与实现一、分页组件的简介1.核心类 PagedList2.数据源:DataSource及其工厂3.串联两者:PagedListBuilder4.更多可选的配置:PagedList.Config4.1.分页数量:PageSize4.2.初始加载数量:InitialLoadSizeHint4.3.预取距离:PrefetchDistance4.4.是否启...

2020-03-22 17:34:48 1020

原创 Retrofit源码详细解析

1.Retrofit中的create()方法分析 public <T> T create(final Class<T> service) { //.... return (T) Proxy.newProxyInstance(service.getClassLoader(), new Class<?>[] { service }, ...

2019-05-05 22:00:40 323

原创 组件化开发之旅

在介绍如何实现组件化的开始前,先介绍一下组件化与插件化插件 : 指的是单一功能的组件,或是抽出来的widget等,如支付模块,路由模块,定位模块等。模块 :指的是独立的业务模块,如常见App中的首页模块,直播模块,商城模块等。区别 :组件化更偏向于功能的封装,插件化偏向于业务的模块。一、库工程和module的区别先来简单介绍一下Android依赖库和Android Project的区别,...

2019-04-20 17:58:49 186

原创 是时候体验一波Flutter啦!

1、应用介绍:该应用程序是玩Android部分功能的flutter版本和干货网站部分api。先看看简单效果图:2、功能包括首页文章展示公众号文章合集完整项目合集干货网站妹子接口和服务器是鸿洋大大提供在http://www.wanandroid.comAPI地址: http://www.wanandroid.com/blog/show/2如果在...

2019-04-16 23:13:28 213

原创 Android插件包换肤(高仿网易云音乐换肤)

高仿网易云音乐换肤,插件化下载皮肤包,无需Activity的重启直接实现无缝切换。先看看效果图:由于gif大小有限制,可以扫描二维码,安装体验先简单描述一下网易云音乐换肤的大体过程:1.先去下载一个主题包,这个主题包其实是一个apk文件,里面包含要换皮肤的资源文件2.通过AssetManager,通过反射以及PackageName,获取到下载下来皮肤包的Resource,拿到Reso...

2019-01-16 11:24:53 1152

原创 初体验微信小程序记事本

最近参评需要,研究了几天小程序,写了一个记事本DEMO,先上效果图,算是一个类似于本地的记事本1.添加记录页面2.选择照片界面3.检索记录界面3.日期选择界面4.历史记录功能介绍:该小程序实现记录功能,包括添加照片和关键字进行保存一条便签的功能!后期想法:因为小程序的后台实现是https并且域名必须是注册合法的,所以限制比较大,待后期实现技术介绍:使用媒体相机添加照...

2019-01-09 19:27:53 4208 3

原创 今日头条适配方案解读及常用适配方案总结

Android屏幕适配方案:在了解适配方案之前,先来一遍dp,dpi,density概念吧!px : 是pixel的缩写,pixel即像素,平时所说的设备的分辨率是多少,这里的单位就是px。dp: 指的是设备独立像素,以dp为尺寸单位的控件,在不同分辨率和尺寸的手机上代表了不同的真实像素,比如在分辨率较低的手机中,可能1dp=1px,而在分辨率较高的手机中,可能1dp=2px。或者是1dp=...

2018-11-13 10:54:53 3416

原创 TODO 最适合练习主流框架的应用

目录1、应用介绍:2、用到的第三方库:3、Apk下载4、项目运行截图5、关于我:6、项目地址:1、应用介绍:使用MVP+Dagger2+Retrofit+Rxjava2+RxLifecycle+ARouter框架构建虽然项目很小,但五脏俱全,很适合学习!接口和服务器是鸿洋大大提供在http://www.wanandroid.comAPI地址: http://www.wanandroid....

2018-09-30 09:56:43 1022

原创 RxPermissions、RxBidnding、Rxjava2简单总结

RxPermissions总结Rxjava中知识点总结Subscriber和Observer接口的区别:在RxJava2版本中2.1.11中没有区别 &amp;lt;–特别注意:2种方法的区别,即Subscriber 抽象类与Observer 接口的区别 –&amp;gt;1、 相同点:二者基本使用方式完全一致(实质上,在RxJava的 subscribe 过程中,Obser...

2018-05-13 15:52:43 871

原创 Retrofit详细使用及文件上传下载(前后台详细实现)

在开始之前,本片文章使用得是Rxjava和retrofit结合,介绍的文件的上传和下载的实现,如果还不太了解和使用Rxjava和Retrofit的基本使用的同学,可以先了解完这部分内容以后,在阅读本篇文章。retrofit的注解字段的介绍和使用:1.@GET请求的参数解析:标记是GET请求。 /** * 首页Banner * http://www....

2018-03-20 16:39:39 1682

原创 使用Alibaba开源库vLayout实现淘宝首页

按照自己之前写简书的习惯,先上效果图:(图片素材来自于淘宝手机客户端) 在研究具体的使用的时候,先看看官方对于vLayout 的介绍和使用方法: vLayout的官方地址: https://github.com/alibaba/vlayout官方的介绍:通过定制化的LayoutManager,接管整个RecyclerView的布局逻辑;LayoutManager管理了一系列L

2018-01-04 15:18:00 6515 4

原创 移动端 [Android & iOS] 压缩 ECDSA PublicKey

使用 Android KeyStore 和 iOS 的 Secure Enclave 提供的安全能力使用 P-256 来对 API 请求进行签名,服务器端再进行验证。但是发现不论是 iOS 还是安卓都没有提供一个便捷的方式从 iOS 的SecKeyCopyExternalRepresentation(SecKeyCopyPublicKey) 和 Android 的 KeyPair 中得到 33-bytes 的 compressed public key。

2023-09-27 11:11:04 776

原创 端口占用问题 Error: listen EADDRINUSE: address already in use :::8888

Error: listen EADDRINUSE: address already in use :::8888记录个日常Bug,启动环境突然启动不了,报这样的错误,则是端口占用问题Error: listen EADDRINUSE: address already in use :::8888记录一下过程:1. 查找占用端口 8888 的程序的 PIDsudo lsof -i:8888如下图所示:则端口占用的程序的 PID 小编为:134212. 杀死这个 PID 程序sudo kil

2021-07-31 17:26:50 3798

原创 Python中的模块与包介绍

目标了解模块导入模块制作模块__all__包的使用方法一. 模块Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。模块能定义函数,类和变量,模块里也能包含可执行的代码。1.1. 导入模块1.1.1 导入模块的方式import 模块名from 模块名 import 功能名from 模块名 import *import 模块名 as 别名from 模块名 import 功能名 as 别名1.

2021-01-13 22:02:42 193

原创 Python 自定义对象数组 转JSON 字符串

前言在Python中基本数据类型可以直接使用json.dumps直接转json字符串,但是对于自定义的类来说,需要先将对象“字典化”,也就是使用__dict__这个函数;同理对于数组中的对象,每个对象都需要提前“字典化”,废话不多说,看代码:Report.pyclass ReportBean: def __init__(self, channel, version, result): self.channel = channel self.version = v

2020-11-30 19:51:23 2523 1

原创 Python中关闭adb命令

目录Python中关闭adb命令Python运行cmd命令主要有两种方式:Python OS模块Python 管道subprocess模块。Python中关闭adb命令Python获取Android应用日志的时候,通过采用adb的方式,但是常规在cmd里面执行的命令,运行完就结束了,但是假如获取日志这种,是一直在后台运行的这种命令,这种假如通过如下运行方式, os.popen("adb --version")即使关闭程序,adb也是一直在后台进行获取因为Python获取应用日志的时候, adb

2020-10-28 23:07:46 1678

原创 Git 团队协作常用术语 WIP PTAL CC LGTM

WIP  — Work in progress, do not merge yet. // 开发中LGTM — Looks good to me. // Riview 完别人的 PR ,没有问题PTAL — Please take a look. // 帮我看下,一般都是请别人 review 自己的 PRCC — Carbon copy // 一般代表抄送别人的意思RFC  —  request for comments. // 我觉得这个想法很好, 我们来一起讨论下IIRC  —  if I r

2020-08-31 23:22:15 501

原创 面试之HashMap夺命连环Call

1. HashMap 的数据结构?哈希表结构(链表散列:数组+链表)实现,结合数组和链表的优点。当链表长度超过 8 时,链表转换为红黑树。transient Node<K,V>\[\] table;2. 说一下对hash算法的理解?Hash算法:将任意数据转换为一个指定大小范围的数据,通常256字节以内,且相同的数据得到的hash值相同, 通常使用为MD5、 快速索引查找,HashMap等3. HashMap工作原理HashMap 基于 hashing 原理,我们通过 put() 和

2020-07-27 18:24:29 284

原创 设计模式(十五)享元设计模式

文章目录1.定义2.使用场景:3.UML建模图4.简单实现示例1.定义享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。2.使用场景:主要解决:在有大量对象时,有可能会造成内存溢出,我们把其中共同的部分抽象出来,如果有相同的业务请求,直接返回在内存中已有...

2020-04-28 14:48:10 137

原创 kotin之lateinit、by lazy、类型转换、接口回调

目录结构一、lateinit 延迟初始化二、by lazy延时初始化三、kotlin中by关键字的作用:1.将接口的实现委托给另一个对象2.将属性访问器的实现委托给另一个对象四、as关键字和is关键字的使用五、回调函数的Kotin的lambda的简化kotlin中属性在声明的同时也要求初始化,否则会报错,如下图示例private var name0: String //报错private v...

2020-03-17 19:11:52 1014

原创 kotlin常见函数let,with,run,apply,also的使用

目录一、 let关键字的使用二、内联函数with三、内联扩展函数之run四、内联函数apply五、内联扩展函数之also六、let,with,run,apply,also函数区别一、 let关键字的使用let扩展函数的实际上是一个作用域函数,当你需要去定义一个变量在一个特定的作用域范围内,let函数的是一个不错的选择;let可以配合可空性 “?”来使用,如果data=null 则不执行le...

2020-03-17 11:43:38 695

原创 Android 获取 usb 权限

文章目录前言:一、直接在AndroidManifest.xml文件中进行如下配置:二、动态代码获取2.1 代码中获取(前提是已经定位到要申请USB权限的usbdevice)2.2 注册广播接受者前言:最近工作上遇到几个USB模块在android平台上适配使用的情况,所以要用到USB权限获取问题##USB权限获取有以下2种方式:一、直接在AndroidManifest.xml文件中进行如下配...

2019-10-07 10:24:01 9472

原创 GreenDao出现异常WARNING: API 'variant.getJavaCompiler()'

文章目录1.问题描述2. 解决方法:1.问题描述使用GreenDao出现如下异常WARNING: API ‘variant.getJavaCompiler()’ is obsolete and has been replaced with ‘variant.getJavaCompileProvider()’.这个原因是因为你Gradle版本高或者不稳定导致的,可以通过降低Gradle版本就可...

2019-08-29 17:22:30 851

原创 设计模式(一)设计六大原则

文章目录1. 单一职责原则(SRP)2. 开放封闭原则(ASD)3. 里氏替换原则(LSP)4. 依赖倒置原则(DIP)5. 迪米特原则(LOD)6. 接口隔离原则(ISP)1. 单一职责原则(SRP)定义:就一个类而言,应该仅有一个引起它变化的原因。从这句定义我们很难理解它的含义,通俗讲就是我们不要让一个类承担过多的职责。如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化...

2019-08-21 06:53:33 134

原创 设计模式(十六)中介者设计模式

文章目录1.定义:2.使用场景3.UML图示4.中介者模式的简单实现1.定义:中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。2.使用场景中介者模式很容易实现呢,但是也容易误用,不要着急使用,先要思考你的设计是否合理。当对象之间的交互变多时...

2019-08-21 06:42:40 194

原创 设计模式(十四)原型设计模式

文章目录1.定义:2.使用场景3.UML图示4.简单示例5.浅拷贝和深拷贝5.1实现浅拷贝5.2 实现深拷贝6.优缺点比价1.定义:原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如...

2019-08-18 11:36:42 166

原创 设计模式(十三)策略设计模式

文章目录1.定义:2.使用场景3.UML建模图4.策略模式的简单实现5.优点缺点比较优点缺点6.在Android中的使用示例1.定义:定义一系列的算法,把每一个算法封装起来, 并且使它们可相互替换。策略模式模式使得算法可独立于使用它的客户而独立变化。2.使用场景意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。主要解决:在有多种算法相似的情况下,使用 if…e...

2019-08-17 18:22:21 173

原创 设计模式(十二)模板设计模式

1.定义:定义一个操作中的算法框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤2.使用场景1.多个子类有公有的方法,并且逻辑基本相同2.重要、复杂的算法,可以把核心算法设计为模板方法,周边的相关细节功能则由各个子类实现3.重构时,模板方法模式是一个经常使用的模式,把相同的代码抽取到父类中,然后通过钩子函数约束其行为3.UML建模图Abs...

2019-08-14 09:45:20 111

原创 设计模式(十一)单例设计模式

简介:单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例。一、饿汉式 private static final CEO ceo=new CEO(); private CEO(){ } public static CEO getCeo(){ ...

2019-08-13 22:39:46 110

原创 设计模式(十)观察者模式

文章目录1.定义:2.UML建模图3.观察者模式简单实现3.Android中的使用3.1 Button的点击事件的使用(接口回调,1对1关系)3.2 ListView的Adapter的观察者分析1.定义:观察者模式定义对象间的一种一对多的关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新。2.UML建模图Subject:抽象主题(抽象被观察者),抽象主题角色把所有...

2019-07-29 22:34:15 166

原创 设计模式(九)备忘录模式

文章目录1.定义:2.简单描述:3.UML建模图4.简单示例:5.Android中的备忘录设计模式:6.备忘录优缺点:1.定义:备忘录模式属于行为型模式,它通过在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。2.简单描述:备忘录模式用户保存对象的状态,并且以后恰当时间可以再次恢复到此状态。即可以保存和获取该对象的状态。3.UML建模图UML角色解读:M...

2019-07-27 21:05:32 226

原创 设计模式(八)状态模式

定义:当一个对象的内在状态发生改变时允许改变其行为,这个对象看起来改变了其类描述:状态模式中行为是由状态决定的,不同的状态有不同的行为,状态模式的意图是让一个对象在其内部状态改变的时候,其行为也随之改变。应用场景一个对象是有状态的这个对象在不同的状态时,行为不一样状态可以切换UML建模图Context :环境类,定义客户兴趣的接口,维护了一个State子类的实例,这个实例定义了...

2019-07-23 23:34:44 105

SQLCipher解密移动端加密的db文件

该资源为解密通过SQLCipher在Android或者iOS平台加密的数据库,方法简单高效,没有命令语句,只是一个简单的activity,只需要运行,便可解密!

2019-03-17

insight.io for github chrome 插件

Chrome 浏览器方便查看GitHub上树形结构代码的插件,可以在线直接查看

2018-11-28

Sublime Text_3.1.1 for Mac

sublime Text_3.1.1 for mac,该工具是破解版,镜像文件中有相应的安装步骤,只需要将listener添加到user listener中即可

2018-11-28

junit-4.12.jar

该jar包是junit版本为4.12,如果在Spring中使用了注解配置ApplicationContext.xml的话,就必须使用junit4.12版本或者更高

2018-08-09

Android反编译工具

这是一款Android的反编译工具,可以进行反编译apk,dex等,帮助我们学习和参考更好的代码规范和风格!

2017-12-25

空空如也

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

TA关注的人

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