自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

android小菜

Android开发者点滴

  • 博客(109)
  • 资源 (12)
  • 收藏
  • 关注

原创 一文了解DataStore(Proto)

本篇主要介绍Proto DataStore的内容。如果还不了解DataStore,请参考上篇一文了解DataStore(Preferences)本篇会涉及到Protocol Buffers相关的内容,如果不太了解,可以查资料作以了解。在protobuf闭包内添加如下配置,则生成的文件会在响应的目录,如"$projectDir/src/main"会在目录src/main/debug/java/包名/下生成$projectDir}...

2022-08-06 10:00:00 776 1

原创 一文了解DataStore(Preferences)

本篇主要介绍DataStore,包含介绍,使用等。本篇会介绍DataStore两种实现Preferences DataStore(主要介绍)和Proto DataStore(后续介绍)。本篇也会介绍到DataStore和SharedPreferences的不同之处,以及如何进行迁移。首先,DataStore是Jetpack一部分,是一种数据存储解决方案。其次,DataStore使用协程及flow以异步、一致的方式实现数据的存储。......

2022-08-05 08:00:00 898

原创 【Koltin Flow(五)】SharedFlow及StateFlow

相对于Flow而言,SharedFlow为热流,也就是说不管有无接收者,都会发送值。和SharedFlow一样,StateFlow也是热流,但是区别在于状态的保存,保存了最新的值,也就是新的接收者会收到最新的值,和设置了replay = 1的SharedFlow比较类似。本篇主要介绍了SharedFlow和StateFlow的基本使用、以及参数设置相关内容。本篇也终点介绍了shareIn操作符的使用,以及各种策略参数的设置,stateIn类比shareIn理解。......

2022-08-04 20:00:00 1049

原创 【Koltin Flow(四)】Flow背压

本篇主要介绍背压相关的内容,如背压的产生、处理方式等。本篇将介绍背压相关的操作符,如buffer等。本篇主要介绍了flow背压产生的原因、通俗类似于水流的理解方式。本篇介绍了flow的处理优化方式,主要操作符围绕buffer展开。本篇为自己学习及使用过程中的总结,难免存在错误或思维局限,欢迎大家讨论指正。......

2022-08-03 20:00:00 592

原创 【Koltin Flow(三)】Flow操作符之中间操作符(三)

本篇主要介绍中间操作符的功能性操作符以及一些其他操作符。如果对其他的操作符或者flow基本知识不太了解,可参考目录的其他篇内容作为参考。本篇主要介绍了一些功能性操作符,如retry等。buffer、conflate这两个操作符主要和背压部分相关,在背压的部分作以展开说明。其他操作符,主要做了下分类说明,因为牵扯到其他大块的内容,在其他的部分作以补充。.........

2022-08-02 20:00:00 421

原创 【Koltin Flow(三)】Flow操作符之中间操作符(二)

本篇主要介绍的有组合操作符、回调操作符,也会涉及一些其他的操作符。【KoltinFlow(一)】五种创建flow的方式【KoltinFlow(二)】Flow操作符之末端操作符【KoltinFlow(三)】Flow操作符之中间操作符(一)本篇主要介绍了两个部分操作符,分别为合并操作符和回调操作符。合并操作符,主要实现多个flow的一些合并、展平等操作;回调操作符,主要在flow执行的特定阶段回调展示或处理操作。本篇为自己学习及使用过程中的总结,难免存在错误或思维局限,欢迎大家讨论指正。............

2022-08-01 18:45:00 740

原创 【Koltin Flow(三)】Flow操作符之中间操作符(一)

flow的中间操作符比较多,根据作用大概可以分为几个类,如变换操作符、过滤操作符等。本篇主要介绍的有变换操作符、过滤操作符、也包含其他的一些操作符。【KoltinFlow(一)】五种创建flow的方式【KoltinFlow(二)】Flow操作符之末端操作符本篇主要介绍了中间操作符的一部分,其他的在下一篇继续介绍。本篇设计到中间操作符的两类操作符,分别为变换操作符、过滤操作符。操作符本身的理解并不难,只要总结起来结合具体的代码去理解就会比较容易。...........................

2022-08-01 10:43:26 935

原创 【Koltin Flow(二)】Flow操作符之末端操作符

本篇主要介绍flow的操作符部分,想要了解flow的创建,可以参考上一篇【KoltinFlow(一)】五种创建flow的方式Flow操作符主要分为末端操作符和中间操作符,本篇主要介绍末端操作符。本篇会介绍各类操作符的作用和使用方式,当然操作符比较多,也不会全面覆盖,会选择终点进行讲解。.....................

2022-07-29 11:08:49 1150

原创 【Koltin Flow(一)】五种创建flow的方式

flow是序列的异步版本,这是一种收集类型,其中的值是逐个生成的。与序列一样,只有需要某个值时,flow才会根据需要生成该值,而且flow可以包含无限数量的值。简单来说就是流式处理,用过Rx的会比较容易理解。flow通过api和协程支持,处理响应式编程更方便。本篇主要介绍flow的基础创建部分,介绍了五种方式,因为内容比较简单,介绍比较少,直接上代码也比较好理解。............

2022-07-28 17:13:51 644

原创 安装调试报错:The application could not be installed: INSTALL_FAILED_USER_RESTRICTED

错误描述:手机调试安装应用不能成功,完整报错如下:Installation did not succeed.The application could not be installed: INSTALL_FAILED_USER_RESTRICTEDList of apks:[0] ‘D:\Android_WS\Trip\app\build\intermediates\apk\flavors_dev\debug\Trip.apk’Installation via USB is disabled.

2022-05-18 16:55:47 10552 2

原创 andrioid11打开其他应用的正确姿势

简介介绍此篇文章主要在应用内打开其他应用的正确姿势的基础上解决android11的适配问题,具体的打开代码此处不再赘述,可参考应用内打开其他应用的正确姿势参考文档谷歌开发者android11上遇到的问题:打电话、打开地图等找不到相关的应用原因:主要是android11的管理软件包可见性变更解决方案1(不推荐,Google市场会限制):<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"

2022-05-05 17:15:38 1962 1

原创 Kotlin之协程(四)上下文与调度器

简介介绍此篇文章主要介绍了kotlin上下文与调取器,如果之前没有接触过协程,可以参考下面的文章目录参考文档谷歌开发者Kotlin文档文章目录Kotlin之协程(一)初识Kotlin之协程(二)取消...

2021-09-27 15:56:28 317 1

原创 Kotlin之协程(三)组合挂起函数

简介介绍此篇文章主要介绍了kotlin组合挂起函数,如果之前没有接触过协程,可以参考下面的文章目录参考文档谷歌开发者Kotlin文档文章目录Kotlin之协程(一)初识Kotlin之协程(二)取消简单组合挂起函数1.顺序执行任务代码如下: private fun test() = runBlocking { val time = measureTimeMillis { val str1 = doIt1() va

2021-09-16 18:02:06 289

原创 Kotlin之协程(二)取消

简介介绍此篇文章主要介绍了kotlin的取消深入的介绍,如果之前没有接触过协程,可以赞考上一篇内容初始中的内容。参考文档谷歌开发者Kotlin文档文章目录Kotlin之协程(一)初识协程之取消深入1.概述简答的取消在上篇初识中已经有所介绍,不再赘述,这篇继续来深入了解协程的取消。2.取消异常代码如下 val job = launch(Dispatchers.Default) { try { var index =

2021-09-16 14:17:11 991

原创 Kotlin之协程(一)初识

简介介绍 协程是一种并发设计模式,您可以在 Android 平台上使用它来简化异步执行的代码。简单来说就是执行异步任务。参考文档谷歌开发者Kotlin文档优点轻量:您可以在单个线程上运行多个协程,因为协程支持挂起,不会使正在运行协程的线程阻塞。挂起比阻塞节省内存,且支持多个并行操作。内存泄漏更少:使用结构化并发机制在一个作用域内执行多项操作。内置取消支持:取消操作会自动在运行中的整个协程层次结构内传播。Jetpack 集成:许多 Jetpack 库都包含提供全面协程支持的扩展。

2021-08-26 14:43:00 229

原创 Android开发获取系统通知开启状态及跳转设置

前言在App开发中有时候需要知道app通知的系统设置是否开启,来进行相关的展示,与跳转系统设置的操作。方案在比较早的版本之前,系统没有相关的api进行直接的操作,需要通过反射的方式去进行操作。但是现在已经不需要了,直接调用系统的api进行操作即可。代码解决判断是否开启状态,直接调用系统api,开启返回true,未开启返回false。NotificationManagerCompat.from(this).areNotificationsEnabled();跳转app详情页进行设置

2021-01-14 15:46:11 907

原创 水滴屏等异形屏的状态栏处理问题

问题水滴屏等异形屏在启动页状态栏出现黑边的问题。theme配置项如下 <style name="MyFullScreenTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:windowNoTitle">true</item> <item name="android:windowFullscreen">true</item&gt

2021-01-13 14:38:44 1423

原创 状态栏Theme相关配置

前言目前说起来大部分App都会设置状态栏和目前App想配套的颜色,或者内容直接深入状态栏部分。另外鉴于目前设备版本基本都到了5.0 6.0之上 所以之前的版本不做考虑。设置概览目录分为values、values-v23,其中values-v23 主要解决白色背景时候的状态栏字体颜色问题。values的style 相关 <style name="customTheme" parent="AppTheme"> <!-- 5.0之前为tr

2020-11-12 14:27:25 431

原创 撸一个开源网络库

前言 之前工作的很多时候都是拿来主义,开源库一大堆,总有一款适合你的,但是往往导致很多时候出现问题不好定位,对于一些底层的业务根本不熟悉,技能无法提升。在此背景下决定撸一款网络请求库,一方面为了使用方便,另一方面也能更认识网络请求的各个细节,提升自己当然因为一些思维局限性,难免会存在考虑不周等问题,希望多多理解,后续肯定继续努力。正文开始说明此处为了测试自己撸了个网络测试服务,具体见博客,相关博客连接如下:自己撸一个网络测试服务网络库介绍库名及功能:Simple的子库Net库,

2020-09-30 10:25:02 4139

原创 撸一个SpringBoot网络测试服务

写在前面作为一个Android开发者为什么要撸一个网络测试服务呢?试想一下,当你想自己封装下网络请求库,埋头撸出来了,也不知道有没有问题,反正就是撸出来了,有没有问题不知道,想要测试要不在网上找相关的开放api去测试,但是哪有完全符合自己预期的开放api,为了解决这个问题,动手自己撸一个测试服务吧。正文开始服务项目相关Java环境,作为Android开发者,这个已经具备。数据库,这个在测试服务非必须,不做展开。IDE,这里采用IDEA,可以用试用版,完全足够了。开撸Spring

2020-09-29 10:56:52 1427

原创 新建、启动项目报错Unable to instantiate activity ComponentInfo

错误内容1、新建、启动报错如下: Process: org.simple, PID: 1553 java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{org.simple/org.simple.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "org.simple.MainActivity" on path: DexPa

2020-09-11 10:11:37 994

原创 git在push错误HTTP/2 stream 0 was not closed cleanly: PROTOCOL_ERROR (err 1)

错误描述:git在push时候出现错误,完整错误如下:Push failed Enumerating objects: 269, done. Delta compression using up to 4 threads Total 197 (delta 122), reused 0 (delta 0) RPC failed; curl 92 HTTP/2 stream 0 was not closed cleanly: PROTOCOL_ERROR (err 1) the remo

2020-06-04 14:53:50 11748 10

原创 Android Jetpack之DataBinding(三)

前言本文是在前文的基础上继续深入DataBinding的使用这一块,如果有不懂的地方,请移步上一篇Android Jetpack之DataBinding(一)Android Jetpack之DataBinding(二)DataBinding使用之绑定适配器绑定适配器负责发出相应的框架调用来设置值。如setText()、setOnClickListener()等,同时适配器绑定库允许自定义方法、逻辑、和返回值类型等操作。1. 设置特性值、自动选择方法:只要绑定的值放生改变,生成的绑定类就会调

2020-05-19 18:17:12 656

原创 内存泄漏问题记录:ReportFragment was never GCed but no leak found

问题情况使用内存检测leakcanary进行相关检测。页面返回时候报错内存如下:ReportFragment was never GCed but no leak found问题分析不是常规的内存泄漏,常规应该报错泄漏引用链。一脸懵逼,不知道。因为在页面中使用了time和timertask相关操作,所以怀疑是这两个捣的鬼。问题解决因为刚开始直接报出了泄漏引用链,time和timertask捣的鬼,进行相关操作如下:Lifecycle检测,在onDestroy的时候进行关闭操作:

2020-05-14 15:37:07 4538

原创 Android Jetpack之DataBinding(二)

前言本文是在前文的基础上继续深入DataBinding的使用这一块,如果有不懂的地方,请移步上一篇Android Jetpack之DataBinding(一)DataBinding使用观察者使用使用可观察的bean继承BaseObservable类,实现整体数据的可观察。为属性添加@Bindable注解,生成BR对应属性。重写set方法实现,属性改变时候动态唤醒刷新。其余实现就...

2020-05-12 11:04:30 271

原创 Java Socket通信

Socket简介Socket综述Socket被翻译为套接字,是端到端的链接通信方式,处在网络七层(或五层)协议模型的传输层和应用层之间,我们这里主要基于TCP/IP链接的Socket,这是对传输层的一个抽象封装,通过简单的api就可以实现端到端的传输。Socket相关的类Socket:实现通信的主要类,流的读写等操作都是通过此类来完成。ServerSocket:socket服务器,...

2020-04-23 16:40:06 273

原创 Android Jetpack之DataBinding(一)

DataBinding简介DataBinding综述DataBinding是Google Jetpack组件中的一员,该库使用声明性格式(而非程序化地)将布局中的界面组件绑定到应用中的数据源。使用该库,借助布局文件中的绑定组件,您可以移除 Activity 中的许多界面框架调用,使其维护起来更简单、方便。还可以提高应用性能(绑定的时候遍历一遍View,而不是findViewById每次遍历...

2020-01-16 16:42:00 874

原创 Android Jetpack之Room

Room简介前言本篇中数据库调试工具使用debug-db,没接触过的可以看这里介绍https://blog.csdn.net/jinjin10086/article/details/103919983Room综述Room是Google Jetpack组件中的一员,是一种数据库的ORM框架,该库 在SQLite 的基础上提供了一个抽象层,让用户能够在充分利用 SQLite的强大功能的同...

2020-01-10 17:38:13 968

原创 数据库调试工具debug-db

debug-db简介debug-db 是好用的的android数据库调试工具,非常方便。项目地址:https://github.com/amitshekhariitbhu/Android-Debug-Database使用:加入依赖: debugImplementation 'com.amitshekhar.android:debug-db:1.0.6'运行项目,在日志中显示...

2020-01-10 10:29:50 2229 1

原创 Android Jetpack之ViewModel

ViewModel简介ViewModel综述ViewModel是Google Jetpack组件中的一员,注重以生命周期的方式存储和管理UI界面相关的数据,防止内存泄漏。另外可以让数据在发生配置更改(如屏幕旋转后)仍然存在,优于onSaveInstanceState()+onCreate()方式,因为后者只适合可以序列化的少量数据,不适合大的数据,如列表等。ViewModel相关的类...

2020-01-08 15:30:13 913

原创 Android Jetpack之LiveData

LiveData简介LiveData综述LiveData是Google Jetpack组件中的一员,是一种可观察的数据存储器类。但是与常规的观察类不同,LiveData具有生命周期感知的能力,如Fragment、Activity、Service的生命周期等,可以根据需要只在生命周期活跃内更新被观察者的组件,当然也可以常驻观察,根据需求而定。LiveData相关的类LiveData.j...

2020-01-07 15:23:56 342

原创 Android Jetpack之LifeCycle

LifeCycle简介LifeCycle综述LifeCycle是Google Jetpack组件中的一员,使用LifeCycle完美实现生命周期的管理,如Fragment,Activity等LifeCycle相关的类Lifecycle.java类 : 抽象类,一个持有Android生命周期状态的类。LifecycleOwner.java接口:接口,实现该接口的类拥有了生命周期的状态,...

2020-01-06 16:18:40 262

原创 Android源码解读之事件分发

综述Android事件的分发从Activity的dispatchTouchEvent开始一路追进入如下:Activity的dispatchTouchEventWindow->PhoneWindow的superDispatchTouchEventDecorView的superDispatchTouchEventViewGroup的dispatchTouchEvent从ViewGroup的...

2020-01-02 18:03:45 192

原创 kotlin之GlideApp无法生成问题

kotlin-kapt插件支持Android的注解处理1、配置kotlin-kapt插件apply plugin: 'kotlin-kapt'2、替换注解依赖implementation 'com.github.bumptech.glide:glide:4.9.0'kapt 'com.github.bumptech.glide:compiler:4.9.0'...

2019-10-17 12:00:17 599

原创 apk签名

jarsigner -verbose -keystore d:/meia.keystore -signedjar d:/HWNS_SIGNED.apk d:/HWNS.apk meiajarsigner -verbose -keystore 签名文件 -signedjar 签名apk输出怒目 原apk目录签名文件别名完了之后会让你输入签名文件密码...

2019-08-05 16:06:35 453

转载 有关导入aar依赖出现Manifest merger failed : Attribute application@label value=(@string/app_name)解决办法

https://blog.csdn.net/lyy666888/article/details/80451165

2019-04-15 20:33:08 1257

原创 错误记录:java.lang.IllegalStateException: closed

1、问题:java.lang.IllegalStateException: closed2、原因:okhttp的 response.body.string()多次调用导致

2019-04-09 18:17:40 2193

原创 AndroidStudio启动模拟器出错emulator: ERROR: x86 emulation currently requires hardware acceleration!

1、错误信息:emulator: ERROR: x86 emulation currently requires hardware acceleration!2、原因:硬件加速配置安装问题。3、解决:1)安装,如下图所示(一般都会自动安装):2)打开intel的Virtual technoly支持(将其选项设置为enable即可)进入BIOS 根据不同电脑快...

2019-04-02 15:51:17 1457

原创 SSL handshake aborted: ssl=0x61512948: I/O error during system call, Connection reset by peer

https://blog.csdn.net/start0609/article/details/51332191/ https://github.com/square/okhttp/issues/2372 https://www.jianshu.com/p/97a0694dae68 https://blog.csdn.net/dengsi19361/article/deta...

2019-01-17 10:40:43 9920

转载 android gradle tools 3.X 中依赖,implement、api 指令

本文为转载文章,原文地址:https://blog.csdn.net/soslinken/article/details/73114637前言2017 年google 后,Android studio 版本更新至3.0,更新中,连带着com.android.tools.build:gradle 工具也升级到了3.0.0,在3.0.0中使用了最新的Gralde 4.0 里程碑版本作为gradle 的...

2018-05-05 17:15:25 212

动态时钟,时间

动态时钟

2017-03-05

自定义View(3)

自定义静态时钟View

2017-02-23

自定义View(2)

Android开发自定义水印图片

2017-02-10

自定义View(1)

ViewStudy 自定义View(1)

2017-02-09

Java学习代码

java

2016-12-29

Java学习Jar包资源

java

2016-12-29

Java学习内容

java

2016-12-29

mysql5.1中文手册

mysql中文手册

2016-08-19

Android图表小Demo

hellochart使用简单Demo

2016-08-05

AIDL实现客户端与服务器

简单aidl实现登陆操作

2016-08-03

桌面笔记日历

桌面日历,记录自己每天的事情

2016-03-18

小萝贝实时连接操作

连接手机,进行实时操作,录制视频,截图等功能,实现电脑上操作手机

2016-03-18

空空如也

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

TA关注的人

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