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

Kotlin 学习笔记(四)—— 协程的基础知识,面试官的最爱了~

Kotlin 中,协程就是一个封装好的线程框架。类比于 Java 中的 Executor 或 Android 中的 AsyncTask。...拿 launch: Job的源码来说,我们从 GlobalScope.launch的 launch 方法进入,可以看到 launch 的方法声明是: // code 1 launch 方法声明 public...GlobalScope:通常被用于启动一个顶级协程(顶级协程是顶级作用域,即没有父协程的作用域),这种协程的生命周期是会伴随应用的整个生命周期,不会被取消掉,所以要非常谨慎的使用,容易造成内存泄漏。...= null):取消协程,可选参数用于描述取消协程的理由或错误信息。...水滴技术团队 Android 上的 Kotlin 协程 官方文档 https://developer.android.google.cn/kotlin/coroutines#groovy Kotlin

1.4K30

掌控 Android Gradle

Task声明格式 声明一个 task 只需要在任务名前面加上task就可以了,例如下面声明了一个hello的Task。...hello { println "hello"} Task依赖 单独声明一个task在实际开发中几乎不会有任何的意义,更多的时候是让多个task组合起来,一个依赖另一个,形成一连串的任务集。...接着讲 Project Android │ ├──app │ └──build.gradle │ ├──library │ └──build.gradle...如下代码是我在上一篇文章【企业级 Android 模块化平台设计建议】中讲到的一个例子,在setting.gradle文件中,可以指定一个project位置,这里就可以将一个外部工程中的模块导入到APP...如果你还不会 Kotlin,我强烈推荐你查看我的 【 Kotlin Primer 】系列文章 每个Task都可以配置其输入与输出,如果一个Task的输出与上一次的输出一致,则不会重复执行。

60520

Android编译的小知识

回复:kotlin是jetBrains开发的,后续才被确认为Android的官方语言之一。...如果逻辑刚好走到A库中,刚好要调用C中的funX方法,那么是肯定找不到的,最终会导致NoClassDefFoundError/NoSuchMethodError/NoSuchFieldError 这类错误...中间产物一般在app模块下的build/intermediates下 一、Transform修改字节码 简介 Transform API 是 AGP 1.5 就引入的特性,主要用于在 Android...基于这个原理,我们可以在 classpath "com.android.tools.build:gradle:${agp_version}" 声明的上方引入我们自定义的同名AGP文件jar,这样当实际运行的时候会优先执行我们自定义的逻辑...copy 然后在这个文件基础上修改,例如我这里是在对应的task中加了一行日志代码 发布jar,然后在build:gradle之前引入path 编译app,查看编译日志,发现“替换“成功

52330

浅谈Android Studio 3.0 的一些小变化

主要是因为公司即将开发的新app准备使用Kotlin语言,而Android Studio 3.0 已经把Kotlin的语言支持内置进去了,这样就省去了很多的麻烦,如果你还没接触过Kotlin语言,可以去百度一下...这里就不对Kotlin语言做过多的描述了,今天的重点,是我升级到Android Studio 3.0 以后的故事。...Android Studio的自带Gradle版本是4.1,插件版本是3.0.0,所以如果你使用的是老版本,就会出现一些小的兼容问题,我们看看报了哪些错误呢: 问题1 Error:(72, 0) Cannot...问题5 Error:Execution failed for task ‘:app:javaPreCompileAppDebug’....好多的错误日志啊,其实最关键的只有前两行: 使用注解编译库,需要显示的声明,而我正在使用的butterknife是含有注解编译功能的,但是并没有声明

87810

Gradle Kotlin DSL指南

但是,如果你只需要配置属性或调用所有任务共有的方法,也就是说,它们是在Task接口上声明的,你可以忽略该类型。 你可以通过运行gradle tasks来发现哪些任务可用。...下面是一个Android插件的例子: settings.gradle.kts include("lib", "app") Copy build.gradle.kts buildscript {...// ... }Copy app/build.gradle.kts plugins { id("com.android.application") } android { /...例如,配置和任务都是容器对象,分别包含Configuration和Task对象。社区插件也贡献了容器,比如android。buildTypes容器由Android Plugin贡献。...否则,Gradle会假设我们想从task中读取一个额外的属性 Kotlin DSL插件 Kotlin DSL插件提供了一种方便的方法来开发基于Kotlin的项目,这些项目贡献了构建逻辑。

9.9K20
领券