首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Kotlin使用 Dagger 会遇到的陷阱优化方法

Dagger  Android 开发中相当流行,它是一个提供完全静态和在编译生成代码的依赖注入框架,它解决了很多基于反射而实现的方案中所遇到的开发性能问题。...本文将重点介绍如何 Kotlin使用 Dagger ,包括优化构建时间的 最佳实践 以及一些可能会遇到的问题。...本文的写作灵感来自 Dagger issue 中的一些建议,这些建议直接代表了 Kotlin使用 Dagger 的最佳实践一些痛点。在此要感谢所有的 issue 贡献者。... Kotlin 的某个 property 上添加注解,不清楚最终 Java 是否能够该 property 的 field 或者 method 中获取到该注解。...泛型注入 Kotlin 使用通配符编译泛型使 Kotlin API Java 能一起使用。当某个参数或者字段的类型为 泛型 ,会在 Java 代码中自动生成。

1K30

Android基于Retrofit2.0 封装的超好用的RetrofitClient工具类

支持自定义扩展的APIService 统一处理无网络情况,支持加载进度回调 结合封装RxJava 支持自己定义的缓存机制 使用原生的Retrofit请求网络,熟悉的朋友必定了解,某个ApiServie...构建 单列RetrofitClient客户端. RetrofitClient使用....客户端 今天重要的环节来了,RetrofitClient主要负责创建具体Retrofit,调度分发请求。...(subscriber); } } 细心的朋友已经发现上面代码 指定生产线程消费线程的时候,步骤有点麻烦,每个api都得进行指定线程,那么可以利用rxJava的转换器写一个Transformer...很多时候BaseApiService无法满足需求,Retrofit增加了扩展接口 create 来创建你的API,接着调用execute就可以RxJava关联 。

3.1K20

Linux中使用rsync进行备份如何排除文件目录?

Linux系统中,rsync是一种强大的工具,用于文件目录的备份同步。然而,进行备份,我们可能希望排除某些文件或目录,例如临时文件、日志文件或其他不需要备份的内容。...本文将介绍Linux中使用rsync进行备份如何排除文件目录的方法。图片方法一:使用--exclude选项rsync提供了--exclude选项,可以命令行中指定要排除的文件或目录。...方法三:使用rsync的模式匹配rsync还支持使用模式匹配来排除文件目录。我们可以使用通配符来匹配文件目录名。...方法四:排除隐藏文件目录在Linux系统中,以"."开头的文件目录被视为隐藏文件或目录。如果我们希望排除这些隐藏的文件目录,可以使用--exclude='.*'选项。...*'来排除源目录中的所有隐藏文件目录。图片结论Linux中,使用rsync进行备份,排除文件目录对于保持备份的干净高效非常重要。

1.7K50

使用Hooks,如何处理副作用生命周期方法?

使用React Hooks,可以使用useEffect钩子来处理副作用替代生命周期方法。useEffect钩子可以组件渲染执行副作用操作,根据需要进行清理。...下面是一些常见的用法示例: 1:执行副作用操作: useEffect钩子中执行诸如数据获取、订阅事件、DOM操作等副作用操作。接受一个回调函数作为第一个参数,该回调函数组件渲染后执行。...// componentWillUnmount cleanup(); }; }, []); return ( // 组件渲染内容 ); } 这里副作用操作组件首次渲染执行...返回的清理函数组件卸载执行,模拟了componentWillUnmount方法。 通过使用useEffect钩子,函数组件中处理副作用操作,模拟类组件的生命周期方法。...使用Hooks更加灵活简洁,避免了使用类组件的繁琐代码状态管理。

17030

告别相差8小问题, WordPress 正确使用 Date Time

使用 Date Time 是 WordPress 第三方开发者非常日常的工作,我们知道 PHP 提供了非常多的时间相关的函数类,但是 WordPress 对时间的处理,有自己一套的逻辑。...下面讲解下在 WordPress 中使用 Date Time 的经验坑: UTC 时区 PHP 中,我们可以使用 date 函数格式化一个时间戳,比如: echo date('Y-m-d H:...i:s', 1669043745); // 2022-11-21 23:15:45 如果我们 WordPress 也这么使用,将会输出:2022-11-21 15:15:45,将会相差8小,这是为什么呢...strtotime("2022-11-21 23:15:45"); // 1669072545 上面输入的 1669043745 也是相差 8x3600,也是8小,同样的原因,这个函数也是基于系统默认的时区的...总结 一句话总结,我们 WordPress 中可以使用 Date Time 做很多事情,但是一定使用 WordPress 方式,WordPress 方式,我也总结为两条规则: 进行格式化时间戳操作的时候

73730

Kotlin + 协程 + Retrofit + MVVM优雅的实现网络请求

前言 最近一直闭关修炼Kotlin,说实话真香真好用,刚好公司准备交给我一个新项目,于是打算直接用Kotlin来构建项目。刚好整体架构搭建完毕了,于是把网络请求这一部分先分享给大家。...object为了使RetrofitClient 只能有一个实例 ~~~ object RetrofitClient { val BASE_URL = "https://wanandroid.com...网络请求协程中,并且IO调度单元,所以不用担会阻塞主线程 协程 + ViewModel + LiveData实现 上面也只是简单的实现,只不过是换成了协程,项目中,还可以进一步封装,方便使用前面也提到了...MVVM,所以还用到了Android 新引入的组件架构之ViewModelLiveData,先看ViewModel的实现 class ScrollingViewModel : ViewModel()...因为协程进行请求的过程中,若此时ViewModel销毁,里面的协程正在请求的话,将无法销毁,出现内存泄漏,所以ViewModel onCleared 里面,即使结束协程任务,参考代码如下。

5.1K50

Retrofit2 & RxJava2实现单文件多文件上传

Retrofit2 是目前Android开发主流的网络库,RxJava2也是目前开发者使用的比较多用来更优雅实现异步的库,因为最近业务需求有用到这两个库,就简单分享下它的一个实际使用场景—上传文件 [TOC...具体配置文件根目录下的config.gradle ext { android = [ compileSdkVersion: 25, buildToolsVersion...封装RetrofitClient类 /** * RetrofitClient....具体使用方法 RetrofitClient.getInstance().upLoadFiles(UploadFileApi.UPLOAD_FILE_URL, files,...总结 通篇代码实现很多,但可以看到使用Retrofit2RxJava2的结合起来使用还是挺方便的,再也不用自己去控制线程的切换了,也不用去关注http的具体实现,少写了不少代码,实现起来也优雅不少,希望这篇文章能帮助到大家

2.6K40

我为何早先于你学习并应用Kotlin

首先说说我是怎么下载简书APP的 我们学习或者开发过程中遇到问题总会进行百度或者 Google 搜索,我去年下半年开始自学编程,记得当时做一个辅助软件,我百度找了很多相关技术文章,最先了解到的是发现一批...之后的日子里,利用手机通过搜索找到了不少学习材料,一直到现在我都很喜欢简书上搜索某些方面的技术文章,当然我现在也安装了掘金 APP 其他一些软件。 2. 我是如何了解到 Kotlin 的?...不断遇到问题解决问题的过程中,一个叫 TornadoFX 的开源项目走进我的视线: Lightweight JavaFX Framework for Kotlin ,不就是用其他语言实现的 JavaFX...Kotlin 魅力的同时尝试使用着 TornadoFX 的强大!...其实,给自己一点间,给自己一点勇气,认识自己,审视过去,改变自己,尝试一下,去探索新的世界,说不定就能感受到更加新鲜的空气呢?

88630

鸿蒙 MVP+ Rxjava+Retrofit+okhttp 实现教程【鸿蒙专题7】

/ public class BasePresenter { protected V mView; /** * 绑定view,一般初始化中调用该方法...model.login(username, password) .compose(RxScheduler.Obs_io_main()) .subscribe...Override public void onError(String errMessage) { } } 到此 鸿蒙 MVP+ Rxjava+Retrofit+okhttp 实现教程 使用起来安卓的用法非常像...我这里很多代码是复制过来 同学们可以下载完整的代码来尝试 最后总结: 鸿蒙中MVP+ Rxjava+Retrofit+okhttp 安卓里面基本如出一辙 只是很少地方有些诧异,同学们如果不是很熟悉...还有跟多关于鸿蒙 网络编程的实现方法同学私下有兴趣可以尝试去实现我这边就不展开讲了 ,最后希望我的文章能帮助到各位解决问题 ,以后我还会贡献更多有用的代码分享给大家。

78610

Spark为什么只有调用action才会触发任务执行呢(附算子优化使用示例)?

还记得之前的文章《Spark RDD详解》中提到,Spark RDD的缓存checkpoint是懒加载操作,只有action触发的时候才会真正执行,其实不仅是Spark RDD,Spark其他组件如...导致map执行完了要立即输出,数据也必然要落地(内存磁盘) 2. map任务的生成、调度、执行,以及彼此之间的rpc通信等等,当牵扯到大量任务、大数据量,会很影响性能 看到这两点是不是很容易联想到...会将多个map算子pipeline起来应用到RDD分区的每个数据元素上(后续将要介绍的SparkSQL中的Dataset/DataFrame也是如此) 下面说几个算子的优化,这也是面试中经常问的问题: 我们实际的业务场景中经常会使用到根据...这里举一些常用的transformationaction使用示例: transformation >> map map是对RDD中的每个元素都执行一个指定的函数来产生一个新的RDD。...任何原RDD中的元素新RDD中都有且只有一个元素与之对应。

1.6K30

Spark为什么只有调用action才会触发任务执行呢(附算子优化使用示例)?

还记得之前的文章《Spark RDD详解》中提到,Spark RDD的缓存checkpoint是懒加载操作,只有action触发的时候才会真正执行,其实不仅是Spark RDD,Spark其他组件如...导致map执行完了要立即输出,数据也必然要落地(内存磁盘) 2. map任务的生成、调度、执行,以及彼此之间的rpc通信等等,当牵扯到大量任务、大数据量,会很影响性能 看到这两点是不是很容易联想到...会将多个map算子pipeline起来应用到RDD分区的每个数据元素上(后续将要介绍的SparkSQL中的Dataset/DataFrame也是如此) 下面说几个算子的优化,这也是面试中经常问的问题: 我们实际的业务场景中经常会使用到根据...这里举一些常用的transformationaction使用示例: transformation >> map map是对RDD中的每个元素都执行一个指定的函数来产生一个新的RDD。...任何原RDD中的元素新RDD中都有且只有一个元素与之对应。

2.3K00

​疯狂的SOVA:Android银行木马“新标杆”

此外,SOVA 以完全使用 Kotlin 开发而著称,Kotlin 是一种 Android 支持的编码语言,被许多人认为是 Android 开发的未来。...如果作者对未来功能的承诺保持不变,那么 SOVA 可能会成为迄今为止 Kotlin 中完全开发的最完整、最先进的 Android 恶意软件。...文件哈希下方突出显示的字符串是文件上传到 VirusTotal 使用的名称,文件名为“Vormastor test crypted.apk”。...cookie 注入 剪贴板操作 分布式拒绝服务 改善面板健康 勒索软件(卡号覆盖) 中间人(MitM) 普通推送通知 更多叠加 VNC 2FA拦截 从上述能力可以看出,SOVA 背后的组织者的思路非常激进,尝试将恶意软件僵尸网络的功能相结合...之前的版本中,SOVA 将 .dex 文件存储应用程序的目录中,而在当前版本中,它使用设备的共享存储目录(“Android/obb/”)进行存储,更直接也更加有效。

51520

RxJava这么好用却容易内存泄漏?解决办法是...

,我们使用了as操作符,然后kotlin中,as是一个关键字,使用起来就不是很方便,所以RxLife对kotlin做了适配工作,kotlin中,我们可以使用life替代as操作符,并且更加的简洁,如下...,且它没有做任何处理,如果你子线程使用,就需要额外注意了,而且它只有页面销毁,才会移除观察者,试想,我们首页一般都会有非常多的请求,而这每一个请求都会有一个AndroidLifecycle对象,...RxLifecycle还有一个弊端,当Activity/Fragment销毁,始终会往下游发送一个onComplete事件,这对于onComplete事件中有业务逻辑的同学来说,无疑是致命的打击。...,并且当前非主线程,直接抛出异常,也就说明使用AutoDispose不能在子线程订阅事件。...(this).get(MyViewModel.class) 如文章中若有疏漏之处,请广大读者指正,RxLife刚出来不久,使用过程中如有遇到问题,请在github上留言。

4.5K20

使用Kotlin高效地开发Android App(四)总结

运算符重载 Kotlin的世界里,我们可以重载算数运算符,包括一元运算符、二元运算符复合赋值运算符。 使用operator修饰符来修饰特定函数名的函数,这些函数可以是成员函数也可以是扩展函数。...简化的lambda表达式 使用Kotlin高效地开发Android App(一)中,曾经介绍过尾随闭包,它可以算是一种简化的lambda表达式。...String的处理 Java使用String.format函数,需要记住%d、%s等转换符。Kotlin大概是参考了Groovy的语法吧,使用${变量名}即可,简单方便。...RxJava LiveData、Lifecycle LiveDataLifecycle是Google2017年新出的Android Architecture Components的中的一部分。...LiveData组件用于持有可观测的数据,它掌握着组件的生命周期信息,组件出现活跃状态提供更新,一般用于创建响应式UI。

1K30
领券