Skip to content
  • Android Compose开发:使用Room实现数据持久存储

    当在 Jetpack Compose 中使用 Room 数据库时,你可以充分利用 Compose 的声明式 UI 和 Room 的持久化数据管理能力,来构建具有响应式特性的应用程序。本文将为你提供一个完整的 Room 在 Compose 中使用的示例,以帮助你了解如何集成这两个强大的库。

    步骤一:添加依赖

    首先,在项目的 build.gradle 文件中添加 Room 的依赖:

    implementation "androidx.room:room-runtime:2.4.0"
    kapt "androidx.room:room-co
    implementation "androidx.room:room-runtime:2.4.0"
    kapt "androidx.room:room-co
  • Android Compose开发:使用Hilt实现依赖注入管理

    当在 Jetpack Compose 中使用 Hilt 时,可以充分发挥依赖注入的优势,使你的应用更加模块化、可维护和可测试。本文将为你介绍如何在 Compose 中使用 Hilt 进行依赖注入,以及其优势和常见用法。

    什么是Hilt?

    Hilt 是由 Google 推出的一种依赖注入框架,专为 Android 应用程序设计。它基于 Dagger,旨在简化依赖注入的设置和管理。Hilt 在应用程序的各个层次提供了依赖注入,从而使得代码更具可测试性和可维护性。

  • Kotlin在Android中的应用:Cold Flow和Hot Flow的区别

    在 Kotlin 的 Flow 中,"冷流"(Cold Flow)和 "热流"(Hot Flow)是两种不同的数据流模型,分别用于处理不同的数据流场景。以下是它们的区别以及相应的代码示例。

    冷流(Cold Flow):

    冷流是 Flow 的默认模式,每个收集者(collector)都会获得独立的数据流。每当有一个收集者开始收集数据流时,流的执行会开始,数据流会从头开始执行,而且每个收集者都会从头开始独立地执行流。每次新的收集操作都会重新执行一遍流。

    特点

    • 每个收集者都有独立的数据流副本。

    • 开始收集时会触发一次新的流执

  • Android Compose开发:Navigation导航功能的实现

    在移动应用开发中,优秀的导航体验是确保用户轻松浏览和操作应用的关键因素之一。随着 Android Jetpack Compose 技术的引入,构建出色的用户界面变得更加便捷。而在这一体验中,Jetpack Compose Navigation 扮演了重要角色,使应用导航变得更加简单和流畅。

    Jetpack Compose Navigation 是什么?

    Jetpack Compose Navigation 是 Jetpack Compose 库中的一部分,专为简化应用导航而设计。传统上,Android 应用使用 XML 导航图来管理不同屏幕间

  • Kotlin在Android中的应用:Coroutine协程在安卓中的开发应用

    协程(Coroutines)在 Android 开发中的应用非常广泛,它们为处理异步任务和并发操作提供了一种更简洁、可读性更高的方式。以下是协程在 Android 开发中的一些常见应用场景:

    1. 异步操作:协程可以用于替代传统的回调和线程池,使异步操作更加简洁。例如,从网络请求、数据库查询、文件操作等任务都可以在协程中执行。

    2. UI 线程中的异步任务:协程可以用于在主线程(UI 线程)中执行异步任务,而无需担心阻塞主线程。通过使用 Dispatchers.Main,可以在协程中进行网络请求等操作,同时保持 UI 响应性。

  • Kotlin在Android中的应用:viewModelScope 和 CoroutineScope的区别

    viewModelScopeCoroutineScope 都是用于创建和管理协程的工具,但它们的作用和范围有所不同。它们通常在不同的上下文中使用,主要用于不同的目的。

    1. viewModelScope:
      viewModelScope 是一个特定于 ViewModel 的 CoroutineScope。它是 androidx.lifecycle.viewmodel 库提供的一个扩展属性,用于在 ViewModel 中创建协程。viewModelScope 可以自动在 ViewModel 被清除时取消其中的
  • Android Compose开发:SideEffect在Compose中的应用

    什么是Side Effect?

    "Side effect"(副作用)是指函数或表达式的执行引发的与函数返回值无关的外部变化。换句话说,副作用是对函数外部环境造成的影响,这些影响不仅仅是函数返回的结果。

    在编程中,副作用可以包括但不限于:

    1. 修改全局变量: 函数修改了在函数范围之外定义的变量或状态。

    2. I/O 操作: 函数进行了输入/输出操作,如读写文件、数据库操作、网络请求等。

    3. UI 更新: 函数直接或间接地修改了用户界面,例如在图形界面中更新文本、颜色或图像。

    4. 异常抛出: 函数抛出

  • 如何在Linux(Centos)服务器上部署Docker项目(NestJS)

    我现在所有的服务端都是基于Docker开发,所以在上线部署的时候也是使用Docker,最近对一个项目的服务端进行重构了下,要上新的服务器,这里就记录分享下整个过程。

    安装Docker在Linux

    我使用的服务器是Centos,可以直接YUM来安装,这也是Docker官网推荐安装方式

    sudo yum install -y yum-utils
    sudo yum-config-ma
    sudo yum install -y yum-utils
    sudo yum-config-ma
  • 从零开始创建一个PhotoApp使用CameraX和Compose:在Jetpack Compose中从图库选择照片

    这篇文章是这个系列的最后一篇,前面一篇讲到如何使用CameraX对预览照片进行截图,这篇文章会在上一篇代码的基础上,来分享下如何从图库中选中一张照片,上篇文章中有下面这段代码:

    kotlin
    val emptyImageUri = Uri.parse("file://dev/null")
    Image(
      modifier = Modifier.fillMaxSize(),
      painter = rememberAsyncImagePainter(imageUri),
      contentDescription = "Captured image"
    )
    val emptyImageUri = Uri.parse("file://dev/null")
    Image(
      modifier = Modifier.fillMaxSize(),
      painter = rememberAsyncImagePainter(imageUri),
      contentDescription = "Captured image"
    )

    所以如果要显示图片,我们只要从图库中选中一张图片,然后转换成URI的形式就可以。

  • 从零开始创建一个PhotoApp使用CameraX和Compose:在Jetpack Compose中使用CameraX对相机截图操作

    前面两篇文章已经分别介绍了如何使用Accompanist在Jetpack Compose中获取设备权限,还有如何使用CameraX进行照相预览,此篇文章为这个系列的第三篇: