- 博客(26)
- 收藏
- 关注
原创 Android Okhttp断点续传
指的是在上传/下载时,将任务(一个文件或压缩包)人为的划分为几个部分,每一个部分采用一个线程进行上传/下载,如果碰到网络故障,可以从已经上传/下载的部分开始继续上传/下载未完成的部分,而没有必要从头开始上传/下载。可以节省时间,提高速度。这下载有很多细节要搞,下载可以用多线程,下载可以断点续传。
2024-01-28 21:48:34 815
原创 Flutter 入门
Flutter 只是一个用来解决跨平台的UI框架,最终还是要使用原生平台进行绘制,对于大部分和系统API无关的页面都可以使用Flutter处理,但是有一些获取系统信息的页面比如某个页面获取Android是否打开了通知栏权限?阿里、腾讯、字节跳动、京东、美团等公司均建设了自己的 Flutter 工程化体系,并服务了各自的业务场景,在大量的产品线上使用了Flutter技术。各大中小公司对于新业务,尤其是在团队人力紧缺的情况下,在技术选型上使用 Flutter,能加快产品在多端落地、快速迭代、快速试错。
2024-01-20 14:41:19 563
原创 Kotlin的数据类
在平时的使用中,我们会用到一些类来保持一些数据或状态,我们习惯上成为bean或者entity,也有的定义为model。kotlin中有专门处理这一种类的关键字:data。这种由data修饰的类叫做数据类equals()hashCode()toString()格式是 "MyData(name=wudi, age=20)方法对应按声明顺序出现的所有属性copy()方法类由关键字data修饰(好像是废话)类的构造参数必须由varval修饰,否则编译不通过。
2024-01-20 13:44:11 1299 1
原创 Android lifecycle的使用
是属于Android(官方开发工具包)—— Architecture(架构组件)中的一员。【官方介绍】构建生命周期感知型组件,这些组件可以根据 Activity 或的当前生命周期状态调整行为。其实就是实现生命周期监听,做些逻辑。
2024-01-14 23:24:53 631
原创 Gradle 的implementation,api,compileOnly,compile 区别
compile依赖关系已被弃用,被implementation和api替代;provided被compile only替代;apk被runtime only替代;api:跟2.x版本的 compile完全相同。
2024-01-14 20:01:01 728
原创 registerForActivityResult用法详解
Activity Results API 是 Google官方推荐的Activity、Fragment获取数据的方式。
2024-01-14 11:58:12 600
原创 Android 权限管理
手机难免做一些数据持久化,这个呢,就有可能用到文件的读写权限。手机拍照,拿图片。录音拿音频文件。也要用到对应的权限。随着Android版本的升级,有些权限越来越收紧。所以我们要对一些高版本适配来了。
2024-01-13 21:42:55 475
原创 kotlin --- 特殊类Any
近期在做项目的时候,遇到一个json解析,有一个字段类型为any 并且默认值为""。我就自然认为这个就是String。结果坑了。最后在队友帮助下,查看原来是这个any的问题。我自己对它理解不到位。反思一下,我得补补。
2024-01-13 17:32:27 452
原创 Android Service 使用bindservice和startservice 区别
Android四大组件之一。Service并不与用户产生UI交互。其他的应用组件可以启动Service,即便用户切换了其他应用,启动的Service仍可在后台运行。一个组件可以与Service绑定并与之交互,甚至是跨进程通信(IPC)。基础使用startservice启动服务后,程序退出stopservice,服务依旧存在。而bindservice启动服务后程序退出unbindservice,服务就会销毁。而同时调用两种方法启动同一个方法,只会启动一个服务,但是其生命周期。
2024-01-07 16:18:42 475
原创 Android --- MQTT
实现MQTT协议需要客户端和服务器端通讯完成。在通讯过程中,MQTT协议中有三种身份:发布者(Publish)代理(Broker)(服务器)订阅者(Subscribe)消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。MQTT传输的消息分为:主题(Topic)和负载(payload)两部分:Topic,可以理解为消息的类型,订阅者订阅(Subscribe)后,就会收到该主题的消息内(payload);
2024-01-07 16:00:21 1019
原创 databinding的基础和高阶使用
我都不想读概念,就一句话,数据源跟UI组件绑定。为什么要数据源跟ui绑定呢,还不是想开发更简单么。我们需要先监听数据的变化, 然后再将变化后的数据同步更新到UI上,这样的步骤我们一直在重复,这样的重复性代码我们写了一次又一次。而DataBinding就是为了解决这个问题而存在的,我们只需要将数据绑定到UI元素上,更新数据时UI就会跟着改变,反之亦然,大大节省了我们的代码。这个我们后续的博客里面会分享,这里涉及到架构的思想就先不细讲。带一句,参照前端的思想。
2024-01-06 11:43:52 1278
原创 Kotlin学习 --- 属性,Getters 与 Setters
get()和set()默认方法是可以加上权限修饰符的,比如private,protected。试想:如果用户输入了非法字符,我们在做是否可以在数据类里面把非法字符给排除掉,这里就涉及到了面向对象的封装 私有成员变量并提供get()set()方法以保证。数据的安全性:那么我们这里就可以使用kotlin的自定义访问器get()set()来把不合法规则的脏数据排除。Kotlin声明实体类之后,里面的变量默认就带有set和get的属性功能了。对于get()默认方法只有在获取(使用)属性变量的时候才会调用该方法。
2024-01-01 23:29:18 583
原创 kotlin --- 类 、构造函数、对象
在工作中用到kotlin,发现类的创建,单例,构造函数,创建对象和java有很多不同。这些是kotlin学习的基础,下面开始介绍kotlin的类及其相关的的知识点。
2024-01-01 22:15:32 402
原创 Kotlin --- 函数,高阶函数
kotlin中函数是第一公民,一切皆函数。那么函数就会用的很多了,但是又看到高阶函数。这又是什么意思,还是要从基础看起。kotlin和java一样也有程序入口,那就是main函数。下面一切皆函数的重点来了,函数返回结果赋值。
2024-01-01 21:13:37 566
原创 kotlin --- 控制语句/选择语句 if when for while
在java中,有 if()else{} ,有switch(){} , for , while ,之类语句。但是没见when,这里是什么意思?
2024-01-01 20:34:24 347
原创 kotlin --- 变量和常量区别、空安全
3、Kotlin编译器可以通过等号右边值的类型直接推断出等号左边变量的类型,所以变量的类型是可以被省略。3、Kotlin编译器可以通过等号右边值的类型直接推断出等号左边变量的类型,所以变量的类型是可以被省略。是用来存储数据的,但不同的是常量的数据类型和数据都不可以被修改,可以叫做只读变量,或者值变量(value)2、当变量声明在局部方法内时,当变量被使用时需要先进行初始化赋值,否则编译器也会报错。变量的数据类型是不可以被修改的,但是变量所存储的数据是可以被修改的。var 变量名: 数据类型 = 值。
2024-01-01 19:58:32 369
原创 上架到Google Play国际化,语言切换失效问题解决
然后,从Google play下载发现多语言失效了,从英语切换为法语直接还是英语,一脸懵,难道我弄出bug了,各种尝试,打包发现都没问题,但是只要打成aab ,再编译成apk之后,安装就直接多语言切换失效了。最近遇到一个很坑的问题,本来app在本地多语言切换一点问题都没有,测试也ok,想着打包上架。在app级gradle中,Android-defaultConfig中添加如下代码。主要是language设置为false,表示不进行分包。设置多语言不分包处理可解决。
2023-12-25 23:46:40 266
原创 Android路由框架 - ARouter使用
在组件式开发时,有时在某个Module下想要使用其他Module的业务,很不方便,要不重新写一个,要么提到公共Module,ARouter直接可以解决这类问题。下想要使用其他Module的业务,很不方便,要不重新写一个,要么提到公共Module,ARouter直接可以解决这类问题。这样就可以直接从MineModule调用loginModule的Service了(不用写登录这块逻辑了,很好的解耦)。现在Android项目一般都用的是组件化,组件化完全可以自己通过反射和注解写一套。在组件式开发时,有时在某个。
2023-12-24 21:11:33 158
原创 Android应用构建-BuildTypes ProductFlavor
引言同一套核心代码来维护多个订制的app现开发出一套Android app。在此app基础上,复制出另一个app, 两个app之间略微有一些不同之处。将不同环境的APP安装在同一设备中。构建类型构建类型 = productFlavors + buildTypes构建类型的数量为productFlavors和buildTypes笛卡尔的乘积配置 build 类型在app的build.gradle 内的 buildTypes。
2023-12-24 15:59:39 108
原创 RxJava之网络请求最常见的三种场景
这个例子中,我们使用zip操作符来合并这三个Observables.它们被结合为一个MyViewModel的POJO.其构造参数与源Observables的类型匹配。网络请求也将不会被调用,这也是我们所期待的。如果缓存没有值,然后它便会调用onCompleted,此时也没有发射任何一个值。当你订阅这个源Observable时,将会同时发起三个网络请求,但是只有当它们都完成后才将新的MyViewModel实例发射出去。使用MayBe暗示着观察不到值的可能,例如,缓存为空且网络也没有返回结果。
2023-12-10 13:37:21 77
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人