
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
java.lang.IllegalStateException: SharedPreferences in credential encrypted storage are not available until after user is unlocked一、问题背景在一个AndroidO的平台上,将一个使用SharedPreference应用的TargetSdk设置为26后,如果在TV刚开..
对这种需求,Kotlin提供了另外一套可为空的类型系统,我们需要在编译时期就将所有潜在的空指针异常都处理掉,否则代码将无法编译通过。,如果我们的程序存在空指针异常的风险,那么在编译的时候会直接报错,修正之后才能成功运行,这样就可以保证程序在运行时期不会出现空指针异常了。,这样study就可能为空,因此编译器会提示错误,但是如果我们确认每次调用。不过这是一种有风险的写法,如果对象为空了汇报空指针异常
在文章中有一句话:如果 when 作为一个表达式使用,则必须有 else 分支,因为Kotlin编译器会强制检查默认选项 ,那什么情况下编译器能检测出所有的情况呢?就是本文章标题的两个种情况,枚举和密封类。
使用Java定义一个Person} . . . }使用Kotlin来定义这个类nameageval person = Person() person . name = "Kotlin" person . age = 20 person . printInfo() } //输出 Kotlin's age is 20。
函数用法类似,都要在某个对象上调用,并且只接收一个Lambda 参数,也会在Lambda 表达式中提供调用对象的上下文,但是apply函数无法指定返回值,而是会自动返回调用对象本身。函数无法指定返回值,只能返回调用对象本身,因此无法直接返回,我们的返回值声明的是String类型,因此还需要转化下。上面代码是会编译报错的,是因为全局变量的值随时都有可能被其他线程所修改,即使做了判空处理,仍然无法保证
如果一个函数接收另一个函数作为参数,或者返回值的类型是另一个函数,那么该函数就称为高阶函数。以前开发的时候,入参或返回值都是基本类型或者对象,但是在Kotlin中出现了一个新的类型:函数类型。就是函数也可以像String这种类型一样做入参或者返回值。
java.lang.IllegalStateException: SharedPreferences in credential encrypted storage are not available until after user is unlocked一、问题背景在一个AndroidO的平台上,将一个使用SharedPreference应用的TargetSdk设置为26后,如果在TV刚开..
正常我们都是先订阅,才能接收到发出的事件,sticky的作用就是订阅者可以先不进行注册,事件先发出,再注册订阅者,同样可以接收到事件,并进行处理。是一款在 Android 开发中使用的发布-订阅事件总线框架,基于观察者模式,将事件的接收者和发送者解耦,简化了组件之间的通信,使用简单、效率高、体积小。该模式下,在主线程(UI线程)发送事件,则直接在主线程处理事件,如果处理方法中有耗时操作就会堵塞进程

升级最新的AndroidStudio后,gradle配置文件从Groovy 迁移到 KTS,这里把自己配置应用签名遇到的问题及注意事项分享下。Google官方说明地址。
枯燥又没什么意义,因此针对这个问题也出了很多开源库来解决,例如:Butter Knife(黄油刀)。插件,当时用的时候真是感觉像发现了新大陆一样,非常好用。功能之后,Android Studio会自动为我们所编写的每一个布局文件都生成一个对应的Binding类。之间进行绑定,并不算是非常方便。但是,当你的gradle升级到新版本的时候,会显示下面的提示。标签引入的布局在某些情况下可以减少一层布局的








