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

如何正确的在 Android 上使用协程 ?

使用上是没有任何问题的,可以正常的弹出 Toast 。但是当你执行这个方法之后,立即按返回键返回上一页面,仍然会弹出 Toast 。...大致意思是,Global scope 通常用于启动顶级协程,这些协程在整个应用程序生命周期内运行,不会被过早地被取消。程序代码通常应该使用自定义的协程作用域。...你可以定义一个 BaseViewModel 来处理这些逻辑,避免重复书写模板代码。然而 Kotlin 就是要让你做同样的事,写更少的代码,于是 viewmodel-ktx 来了。...如果它在完成之前就取消了,当 LiveData 再次 active 的时候会重新运行。如果上一次运行成功结束了,就不会再重新运行。也就是说只有自动取消的 liveData{ } 可以重新运行。...其他原因(比如 CancelationException)导致的取消也不会重新运行。 所以 livedata-ktx使用是有一定限制的。对于需要用户主动刷新的场景,就无法满足了。

2.7K30

使用 Kotlin API 实践 WorkManager

WorkManager 基础 当您需要某个任务保持运行状态,即使用户切换到别的界面或者用户将应用切换到后台,甚至设备重启的时候仍然不影响任务状态,那么非常推荐使用 WorkManager。...类似的应用场景包括: 上传日志或者报告数据 使用滤镜处理图片的同时保存图片 通过网络定期同步本地数据 如果您的即时任务可以在用户脱离某个作用域时结束,比如切换到其它界面,我们建议您还是直接使用 Kotlin...您可以扩展 Worker 类,并且复写 doWork() 方法。由于这个类非常重要,我们会在后边内容中进行详细介绍。这里是它最初的实现代码。...,所以我们使用 OneTimeWorkRequest.Builder,将需要模糊化处理的图片的 Uri 作为参数传入。...CoroutineWorker 通过使用 Kotlin 协程来执行异步任务。 doWork() 方法是一个 suspend 方法。也就是说我们这里可以调用可挂起的 dao 函数。

50230

Google发布Android KTX预览版

前天,Google 发布了 Android KTX 预览版,Android KTX 是一组扩展程序,它能使 Android 上的 Kotlin 代码更简洁,从而提高开发者的编程体验。...SharedPreferences 编辑 SharedPreferences 是非常常见的用例,使用 Android KTX 后,代码稍微短些,能更自然地读取和写入。...Android集成 要在你的 Android Kotlin 项目中开始使用 Android KTX,需要在应用模块 build.gradle的脚本文件中添加以下配置脚本: repositories {...的自动完成列表中,选择扩展程序会将必要的导入语句添加到你的文件中。...注意:不过需要注意的是,Android KTX目前还是一个预览版本,预览期间 API 可能会发生变化,也就是说,在正式版到来之前,不要在重要的 Android 项目中使用它,因为正式版可能会发生一些变化

32560

近期GitHub上最热门的开源项目(附链接)

TensorFlow 内建深度学习的扩展支持,任何能够用计算流图形来表达的计算,都可以使用 TensorFlow。...建 JavaScript 应用程序的常用方法是将应用程序的状态保存在模型对象中,例如 JSON 文档。具有如下特点和设计原则: 网络不可知论者。...主要分为原则、可扩展性、稳定性、其他方面、会谈、图书七个板块。包括了异常处理,数据库策略等内容。...……………………………… 11、android-ktx https://github.com/android/android-ktx Star 4529 ndroid KTX 是一组扩展程序,它能使 Android...比如: 字符串转换为 URI,Android KTX 会为字符串添加一个扩展函数,使字符串更加自然地转换为 URI。

85290

【Android Gradle 插件】组件化中的 Gradle 构建脚本实现 ⑤ ( 优化 Gradle 构建脚本 | 构建脚本结构 | 闭包定义及用法 | 依赖配置 | android 块配置 )

, 声明了 android 扩展配置 , 因此可以使用 project.android 获取该配置对象 ; /** * 定义闭包 , 传入 project.android 配置对象...* 在 com.android.application 插件中 , 对 Project 进行了扩展 , 声明了 android 扩展配置 * 因此可以使用 project.android...---- 在 Android 的 Gradle 构建脚本中 , 尽量将用到的 变量 , 闭包 , 方法 定义在 Project 的扩展属性 中 , 这样可以在各个 构建脚本 中可以直接使用 ; 定义的方法如下...方法进行修改 ; 在闭包里使用属性时 , 必须指明该属性是谁的 , 如 : project.compileSdkVersion , 说明该属性是定义在 Project 中的, 也就是我们自己使用 ext...设置为 false. ( 非单独运行 ) */ isModuleDebug = true /** * build.gradle 构建脚本中使用到的编译相关版本号

1.3K21

开源组件 | ☁️CloudAAC,一个基于JetPack-AAC的Android通用化框架

} } } implementation 'com.github.Petterpx.CloudAAC:core:v1.0.3' CloudAAC已经导入了以下组件: //一个非常优秀的状态栏处理工具...:2.2.0" 扩展支持 core模块仅提供了核心的基础类,选择将主动改造权交给了大家,为了更好的便于使用,CloudAAC 支持扩展 以下模块。...注意: binding 变量 请谨慎使用,非必要场景下,务必禁止使用,避免造成视图不一致的问题。...扩展,包含了默认的viewModel委托使用 Tab_ktx (仍在优化中) 适用于主页 tab 的 扩展。...base BasePagerAdapter BaseTabActivity …其他相关工具 …ktx 更多扩展等待加入,CloudAAC 尽可能采用扩展与组合方式,以便于不同人群的不同需求,当然如果你有更好的想法

37810

Java失宠,谷歌宣布Kotlin现在是Android开发的首选语言

谷歌说,超过 50% 的专业 Android 开发人员现在使用该语言开发他们的应用程序,在最新的 Stack Overflow 开发人员调查中,它被列为第四大最受欢迎的编程语言。...在一些特定场景下,许多 Java 开发者因为某些方面的问题选择了切换到 Kotlin:比如受够了 Java NullPointerException 的人都喜欢 Kotlin 的 Null 安全特性;扩展函数被大量使用...其二,在若干了领域都有很强的竞争力,比如服务端编程,高性能网络程序,企业软件事务处理,分布式计算,Android 移动终端应用开发等等。...上运行,这对 Java 语言是一种分裂,同时 Oracle 认为,Android 通过不当使用 Java API 挤占了 Java ME 可能的市场,这是它巨额索赔的根基。...2018 年 2 月,Google 推出预览版本的 Android KTX,Android KTX 是一组扩展程序,它在 Android 框架和支持库上提供了一个良好的 API 层,使 Kotlin 代码更加简洁

98920

让Flows感知生命周期

AndroidViewModel来直接访问Context,我们不会处理关于位置权限和设置的不同边缘情况。...现在,如果我们尝试运行这个应用程序,当我们把它放到后台时,我们会看到LocationObserver仍然在监听位置更新,然后获取附近的地方,尽管用户界面忽略了它们。....onEach { viewState -> binding.render(viewState) } .launchIn(this) } 如果我们现在运行该应用程序...stopTimeoutMillis = 5000L), initialValue = ViewState(isLoading = true) ) 如果我们现在运行这个应用程序...这样,我们就可以停止监听位置更新,而不必重新启动整个流程,如果位置没有变化,就重新运行所有的中间操作,我们甚至可以使用 launchWhenStarted 定期收集我们的 viewState Flow,

71320

WorkManager 基础入门

添加 WorkManager 依赖 本文使用 Kotlin 书写代码,使用 KTX 库(KoTlin eXtensions)。KTX 版本的库提供了 扩展函数 为了更简洁和习惯的使用 Kotlin。...保障 你的工作将会运行(即使你重启设备或应用程序退出,它也不会忘记运行你的工作)。 根据用户 API 级别的最佳实践运行(如上一篇文章所述)。...Default Executor:一个默认的执行程序运行你的工作,除非你另行指定。这确保在默认情况下,你的工作是同步运行的,并且在主线程之外运行。 这些部分可以被重写以具有不同的行为。...这是应该脱离主线程运行的工作,但是,因为它与 UI 直接相关,所以如果关闭应用程序则不需要继续。...为了处理并行的三个滤镜工作请求的输出,可以使用 InputMerger,特别是 ArrayCreatingInputMerger。

14410
领券