本篇文章主要讲的是,kotlin 协程在 ktx 上的扩展 lifecycle 扩展 对于 lifecycle 的扩展,已经在 以前的文章中讲过了 主要的依赖 implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.2.0" viewModel 扩展 对于 viewModel 的扩展,已经在 以前的文章中讲过了 主要的依赖 imp
Sealed Class 密封类 如果想对能够创建出的子类做限制,可以使用密封类。 下面一个例子是没有使用密封类的: interface Expr class Num(val value: Int) : Expr class Sum(val left: Expr, val right: Expr) : Expr fun eval(expr: Expr): Int { return when(expr){ is
引入协程包 协程在Kotlin中是以第三方包的形式来使用。 目前位置,最新的协程库版本为: org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.0 引用协程包 一般,为了方便,直接以如下形式引用协程包。 import kotlinx.coroutines.* 使用协程 runBlocking kotlinx.coroutines.runBlock
为了充分利用Android Plugin for Gradle 3.0+的优点,将Android项目拆分成多个module的做法越来越常见。然而,随着module数量的增多,我们很快就会遇到依赖管理的混乱问题。 管理Gradle依赖的三种不同方法: 手动管理 使用Google推荐的“ext” Kotlin + buildSrc 1、手动管理 这是一种
网络没有打开情况下的处理,如弹出对话框,跳转到 打开 WiFi设置的界面等 非WiFi情况下是否加载图片,是否播放视频等 Android 技术人,希望让你看到程序猿不同的一面,除了分享 Coding,,还有职场心得,面试经验,学习心得,人生感悟等等。希望通过该公众号,我们不只会敲代码,我们还会。。。
函数的定义与调用 让函数更好调用 命名参数 使用Java这种面向对象函数,我们肯定会经常遇到函数调用,例如: joinToString(list, "; ", "[", "]") 当我们第一次调用这种函数时就很懵,不知道每一个参数的含义,就造成了不必要的麻烦。 当调用一个Kotlin定义的函数时,可以显示的表明参
this.bookName = bookName; } public int getBookId() { return bookId; } public void setBookId(int bookId) { this.bookId = bookId; } public String getBookName() { return bookName; } public void setBookName(String bookName) { this.bookName = bookName; } @Ove
lib、class.dex和res占用了超过90%的空间,所以这三块是优化Apk大小的重点(实际情况不唯一) 3.2.减少res,压缩图文文件 图片文件压缩是针对jpg和png格式的图片。我们通常会放置多套不同分辨率的图片以适配不同的屏幕,这里可以进行适当的删减。在实际使用中,只保留一到两套就足够了(
Swift 苹果公司希望淘汰 Objective-C 这一专为苹果生态系统打造的、已然“35 岁高龄”的编程语言,而继任者无疑正是五年前才刚刚诞生的 Swift 语言。根据分析公司 RedMonk 发布的长期语言排名,苹果的目标似乎正在顺利实现,Swift 自面世以来就一直保持着良好的增长势头。
前言 众所周知,kotlin是google力推的用以取代java的android开发语言kotlin使用起来比较方便,同时有许多语法糖本文主要讲解了一些比较实用的kotlin技巧 自定义圆角矩形 在项目中,我们常常要定义圆角矩形背景,一般是用自定义drawable实现的但是圆角矩形的背景与圆角常常会有细微的变化,
前言 首先在这里祝大家新年快乐!2022准备跳槽的小伙伴可以往下翻翻看,说不定本文会对你有帮助 Android面试题及答案(2022中高级Android面试必备百题)免费分享!!! 发现网上很多Android面试题及答案整理都没有答案,所以花了很长时间搜集,本套Android面试题大全,Android面试题大汇总,有大量经典
前言 众所周知,kotlin是google力推的用以取代java的android开发语言 kotlin使用起来比较方便,同时有许多语法糖 本文主要讲解了一些比较实用的kotlin技巧 自定义圆角矩形 在项目中,我们常常要定义圆角矩形背景,一般是用自定义drawable实现的 但是圆角矩形的背景与圆角常常会有细微的变
一些闲言碎语 在这个一地鸡毛的2021年末,前有吴签,云迪,后有力宏和weiya,我这一想,我这也不能落后啊!索性,我就把我领导开除了,对没有错,再有三天我就转正了,也许从我出生到现在没有体验过任性的滋味,emm那就在这个魔幻的年末体验一下?什么年末大厂裁员,什么互联网寒冬,走开走开快走开,我都看不
<property name=“out-signed-package” value=" o u t d i r
崩溃率是不是就能完全等价于应用的稳定性呢?答案是肯定不行。处理了崩溃,我们还会经常遇到 ANR(Application Not Responding,程序没有响应)这个问题。出现 ANR 的时候,系统还会弹出对话框打断用户的操作,这是用户非常不能忍受的。 **ANR处理方法:**使用 FileObserver 监听 /data/anr
1、什么是冷启动和热启动 冷启动:在启动应用前,系统中没有该应用的任何进程信息热启动:在启动应用时,在已有的进程上启动应用(用户使用返回键退出应用,然后马上又重新启动应用) 2、冷启动和热启动的区别 冷启动:创建Application后再创建和初始化MainActivity热启动:创建和初始化MainAc
现在越来越讲究效益和成本,比如现在只需一个小程序,一个微信公众号,一个视频,一个微信群或者QQ群,甚至只需要经营你的朋友圈就可以开始你的初期创业想法。 当然一些新技术的不断更新与迭代,新技术的层出不穷让我们本身对Android开发水平还没有达到理想状态时已经产生各种焦虑和担忧
val dropwhile=list.dropWhile {it > 1 } /** dropLastWhile 返回根据特定的函数 从最后一项开始 直到不满足条件后返回 列表Returns a list containing all elements except last elements that satisfy the given [predicate].返回[0, 1, 2, 3, 4, 5, 6, 5, 4, 3, 2, 1, 0]
interceptors += BridgeInterceptor(client.cookieJar) interceptors += CacheInterceptor(client.cache) interceptors += ConnectInterceptor if (!forWebSocket) { interceptors += client.networkInterceptors } interceptors += CallServerInterceptor(forWebSocket) va
首先非空变量和可空变量的区别: // name为不可为空的变量, 不能赋值为null ,若有判断 if(name==null) 无意义,因为肯定不为null var name : String = "" // role 为可空变量 var role : String? = "" 非空变量赋值为Null为报如下错误: 一、判断可空变量是否为null的方式 1
public final String invoke() { return name + lastname; } })); 让我们来观察 lazy() 的源码。由于 lazy() 函数默认使用 LazyThreadSafetyMode.SYNCHRONIZED 参数,因此它将返回一个 SynchronizedLazyImpl 类型的 Lazy 对象: public actual fun lazy(initializer: () -> T):
scope.cancel() } } 以下介绍常见的CoroutineScope及会创建CoroutineScope的场景: 3.2 GlobalScope GlobalScope作用域中的协程在App启动后可一直执行至该协程执行结束或取消,常用来启动一些需要在application生命周期内运行且不能提前取消的顶级协程。 对于一些Activity或Frag
Activity作为Android的四大组件之一,也是Android最基础的东西,是非常重要的部分。搞清楚Activity的生命周期和启动模式,能够使我们设计出更流畅的程序。 本文主要记录我对Activity生命周期和启动模式的探索,从实践出发来掌握理论。 一、基础知识 1.返回栈 Android是通过返回栈来管
<?xml version="1.0" encoding="utf-8"?> 我们可以通过 ExpandableListView 的默认属性来控制部分样式,这里贴上菜鸟教程的属性图片 一级菜单布局文件 <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.
学习目的: 学会用kotlin代替Android 学习过程: 有人跟我说: 学不学kt不重要,他只想卷死我或者被我卷死…… 是的,我不想被卷死,开始了学习。 学习笔记: 有道云笔记https://note.youdao.com/s/T3EwJbn0让学习成为习惯……