![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java与Kotlin
文章平均质量分 57
柚子君下
我要养成写博客的习惯!!
展开
-
Android 用MMKV替代SharedPreferences
MMKV简介MMKV是腾讯基于mmap内存映射开发的通用key-value组件,底层使用protobuf实现序列化\反序列化功能,性能高,稳定性强。并且已在GitHub上开源,地址如下https://github.com/Tencent/MMKVMMKV的原理如下内存准备通过mmap内存映射文件,提供一段可供随时写入的内存块,App只管往里面写数据,由操作系统负责将内存回写到文件,不必担心Crash导致数据丢失。数据组织数据序列化方面,MMKV使用protobuf协议,protobuf在原创 2022-05-18 19:19:36 · 741 阅读 · 0 评论 -
匿名内部类持有外部类的引用会导致内存泄漏?Kotlin:没有那么简单
1. 结论做Android的,或者做Java开发的同学,通常都会听到一句话,内部类持有外部类的引用,可能会导致父类内存泄漏?知道大家很忙,那就先把结论抛出来Java中内部类会持有外部类的引用,可能引发内存泄漏Kotlin存在编译优化,会将内部类编译成普通的类,如果内部类中没有实际引用外部类,则不会造成内存泄漏;如果内部类中引用了外部类,则会将外部类的作为参数传递给“内部类”,进而可能引发内存泄漏。Kotlin协程中,GlobalScope与上条相同,如果协程内部没有实际引用外部类,则不会造成内存原创 2021-11-03 10:11:32 · 4415 阅读 · 0 评论 -
EventBus学习
概述EventBus概念GitHub地址基本用法一些不常用的用法走读源码可以学习到什么原创 2021-06-15 10:53:58 · 245 阅读 · 0 评论 -
RxJava学习笔记
基础用法 compositeDisposable = new CompositeDisposable(); List<String> list = new ArrayList<>(); list.add("hello"); list.add("world"); list.add("ni"); list.add("hao"); Disposable disposable原创 2021-05-31 20:01:43 · 273 阅读 · 0 评论 -
Java并发容器CopyOnWriteArrayList
CopyOnWrite,简称COW,是一种程序设计中的优化策略。基本的实现思路是,从一开始大家都共享同一个内存区域,当有人修改时,才会把内存Copy出去形成一个新的内存区域,然后在新的内存区域上修改,它是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现的并发容器,他们是CopyOnWriteArrayList和CopyOnWriteArraySet。CopyOnWrite容器非常有用,可以在非常多的并发场景中使用到。什么是CopyOnWriteCopy原创 2021-05-19 10:36:14 · 190 阅读 · 0 评论 -
Jetpack Compose学习之rememberCoroutineScope
rememberCoroutineScope是干什么的?一句话,类似于GlobalScope一样,这个就是让你在Composable中使用协程的看代码@Composablefun HelloContent() { val inputText = remember { mutableStateOf("") } val scope = rememberCoroutineScope() Column(modifier = Modifier.padding(16.dp)) {原创 2021-04-26 16:02:52 · 2414 阅读 · 2 评论 -
Kotlin lambda表达式中的.()
今天看到一种新的lambda写法,里面使用了.(), 直接看下面的例子吧class MainActivity : ComponentActivity() { val repeatFun: String.(Int) -> String = { this.repeat(it) } val repeatFunV2: (String, Int) -> String = { str, times -> str.repeat(times) } override fun原创 2021-04-26 14:57:49 · 828 阅读 · 0 评论 -
Android中自定义一个java.lang.Object类会怎么样
我们发现,Android中自定义一个java.lang.Object类会怎么样?可以编译成功吗?答案是可以的。我很震惊。为什么不会有问题呢?这就回到ClassLoader的双亲委托机制,详细请参看文章https://blog.csdn.net/weixin_43662090/article/details/113626287,不再重复啰嗦所以,Android最终会委托到ClassLoader中进行加载,结果发现,ClassLoader中加载过了,所以不会重新进行加载。就算这个时候.原创 2021-04-06 18:27:23 · 182 阅读 · 0 评论 -
Android实现圆角的方案
罗列一下Android实现圆角有哪些方案使用xml的shape来实现圆角<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <corners android:radius="10dp" /> <solid android:原创 2021-04-06 17:52:14 · 1493 阅读 · 0 评论 -
Android CardView实现圆角效果
使用cardCornerRadius就可以直接实现圆角效果,代码如下 <androidx.cardview.widget.CardView android:layout_width="match_parent" android:layout_height="match_parent" app:cardBackgroundColor="@color/gray_d9d9d9" app:contentPadding="1px"原创 2021-04-06 17:17:50 · 2537 阅读 · 0 评论 -
Android有意思的事件分发
假设有这么一道题目,ScrollView里面包着Button,描述上滑的完整事件。我们构建一个布局<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/原创 2021-04-05 20:49:01 · 117 阅读 · 0 评论 -
Java内部类持有外部类的应用
如下代码package com.plbear.leakcanaryimport android.content.Intentimport android.os.Bundleimport android.os.PersistableBundleimport androidx.appcompat.app.AppCompatActivityclass MainActivity : AppCompatActivity() { ... inner class Data {原创 2021-04-05 16:31:04 · 206 阅读 · 0 评论 -
Kotlin 扩展函数的原理
Kotlin有一个非常好的特性,就是扩展函数,非常好用如下package com.plbear.leakcanaryimport android.app.Activityimport android.util.Logfun logcat(msg: String?) { Log.e("yanlog", msg ?: "null")}fun Activity.myStop() { this.finish()}fun String?.toNotNUll(tmp: Str原创 2021-04-05 16:07:00 · 745 阅读 · 0 评论 -
Java的default关键字
今天无意之间看到了一个default关键字, 经过查询, 才发现是JDK 1.8加入的新特性(我TM竟然不知道!)简单来讲, 就是接口中允许实现方法体了, 如下public interface IManager { default void printB() { System.out.println("iManager printB"); }}就像Kotlin一样. 哈哈这个就很好玩了, 我们都知道Java中子类只允许有一个父类, 但是允许实现多个接口那么肯定会原创 2020-10-18 20:58:41 · 227 阅读 · 0 评论