android-kotlin
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chineseandroid-kotlin
android-kotlin
Purpose
用途
This skill provides guidance on using Kotlin for Android development, focusing on key components like ViewModel for state management, LiveData or StateFlow for reactive data, coroutines with viewModelScope for asynchronous operations, Gradle KTS for build configuration, and KTX for Android extensions. It helps in building robust, maintainable Android apps.
本技能为使用Kotlin进行Android开发提供指导,重点讲解ViewModel(状态管理)、LiveData或StateFlow(响应式数据)、搭配viewModelScope的协程(异步操作)、Gradle KTS(构建配置)以及KTX(Android扩展)等核心组件。它有助于构建健壮、可维护的Android应用。
When to Use
适用场景
Use this skill when developing Android apps in Kotlin that require: managing UI state with ViewModel; handling asynchronous tasks like network calls using coroutines; observing data changes with LiveData or StateFlow; configuring projects via Gradle KTS; or simplifying code with KTX extensions. Apply it in scenarios involving activities, fragments, or services where lifecycle-aware components are needed.
当你使用Kotlin开发Android应用,且需要以下功能时可使用本技能:通过ViewModel管理UI状态;使用协程处理网络请求等异步任务;通过LiveData或StateFlow观察数据变化;通过Gradle KTS配置项目;或借助KTX扩展简化代码。适用于需要生命周期感知组件的Activity、Fragment或Service场景。
Key Capabilities
核心能力
- ViewModel: Persists UI-related data across configuration changes; use class.
androidx.lifecycle.ViewModel - LiveData/StateFlow: Observes data changes; LiveData integrates with lifecycle, StateFlow uses Kotlin flows for reactive programming.
- Coroutines: Manage asynchronous code with for scoped coroutines that cancel on ViewModel destruction.
viewModelScope.launch {} - Gradle KTS: Write build scripts in Kotlin script format for better type safety, e.g., .
build.gradle.kts - KTX: Provides extension functions for Android APIs, like from
ContextCompat.androidx.core
- ViewModel:在配置变更时保留UI相关数据;使用类。
androidx.lifecycle.ViewModel - LiveData/StateFlow:观察数据变化;LiveData与生命周期集成,StateFlow使用Kotlin流实现响应式编程。
- 协程:通过管理异步代码,这种作用域协程会在ViewModel销毁时自动取消。
viewModelScope.launch {} - Gradle KTS:以Kotlin脚本格式编写构建脚本,具备更好的类型安全性,例如。
build.gradle.kts - KTX:为Android API提供扩展函数,如中的
androidx.core。ContextCompat
Usage Patterns
使用模式
To implement MVVM architecture, create a ViewModel to hold data and business logic, then observe it in activities or fragments. For asynchronous operations, always launch coroutines within viewModelScope to avoid leaks. Use LiveData for simple observations or StateFlow for more advanced flows. When configuring Gradle, switch to KTS by renaming to and updating syntax. Integrate KTX by adding dependencies in build.gradle.kts, e.g., .
build.gradlebuild.gradle.ktsimplementation "androidx.core:core-ktx:1.7.0"要实现MVVM架构,需创建ViewModel来存储数据和业务逻辑,然后在Activity或Fragment中观察它。对于异步操作,务必在viewModelScope内启动协程以避免内存泄漏。简单数据观察使用LiveData,更复杂的流场景使用StateFlow。配置Gradle时,将重命名为并更新语法即可切换为KTS。通过在build.gradle.kts中添加依赖(例如)来集成KTX。
build.gradlebuild.gradle.ktsimplementation "androidx.core:core-ktx:1.7.0"Common Commands/API
常用命令/API
- Gradle commands: Run builds with for debugging; use
./gradlew build --stacktraceto build debug APK../gradlew assembleDebug - ViewModel API: Extend class; example:
ViewModel.class MyViewModel : ViewModel() { val data = MutableLiveData<String>() } - Coroutines API: Import ; use
kotlinx.coroutinesfor delayed updates.viewModelScope.launch { delay(1000); data.value = "Updated" } - LiveData/StateFlow: Create with ; or
val liveData = MutableLiveData<String>().val stateFlow = MutableStateFlow("") - KTX extensions: Use from
requireContext().toast("Message")KTX for showing toasts.androidx.fragment.app.Fragment - Config formats: In build.gradle.kts, define dependencies as ; set API keys via environment variables like
dependencies { implementation("com.android.tools.build:gradle:7.0.0") }.buildConfigField "String", "API_KEY", "\"$SYSTEM_ENV_API_KEY\""
- Gradle命令:运行进行调试构建;使用
./gradlew build --stacktrace构建调试版APK。./gradlew assembleDebug - ViewModel API:继承类;示例:
ViewModel。class MyViewModel : ViewModel() { val data = MutableLiveData<String>() } - 协程API:导入;使用
kotlinx.coroutines实现延迟更新。viewModelScope.launch { delay(1000); data.value = "Updated" } - LiveData/StateFlow:通过创建LiveData;或通过
val liveData = MutableLiveData<String>()创建StateFlow。val stateFlow = MutableStateFlow("") - KTX扩展:使用KTX中的
androidx.fragment.app.Fragment显示提示框。requireContext().toast("Message") - 配置格式:在build.gradle.kts中,依赖定义为;通过环境变量设置API密钥,例如
dependencies { implementation("com.android.tools.build:gradle:7.0.0") }。buildConfigField "String", "API_KEY", "\"$SYSTEM_ENV_API_KEY\""
Integration Notes
集成说明
To integrate ViewModel, add to build.gradle.kts, then inject it using . For coroutines, include and ensure is used in ViewModel subclasses. When using StateFlow, combine with in fragments. For auth, handle API keys by setting them as environment variables (e.g., ) and accessing via . Ensure AndroidX compatibility by migrating from support libraries.
androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.0ViewModelProvider(this).get(MyViewModel::class.java)org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.0viewModelScopelifecycleScope.launchWhenStarted { viewModel.stateFlow.collect { updateUI(it) } }$ANDROID_API_KEYBuildConfig.API_KEY要集成ViewModel,需在build.gradle.kts中添加依赖,然后通过注入。对于协程,需包含依赖,并确保在ViewModel子类中使用。使用StateFlow时,在Fragment中结合。处理身份验证时,将API密钥设置为环境变量(例如),并通过访问。通过迁移出支持库确保AndroidX兼容性。
androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.0ViewModelProvider(this).get(MyViewModel::class.java)org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.0viewModelScopelifecycleScope.launchWhenStarted { viewModel.stateFlow.collect { updateUI(it) } }$ANDROID_API_KEYBuildConfig.API_KEYError Handling
错误处理
Handle exceptions in coroutines with try-catch blocks: . For LiveData, use with lifecycle owner and handle null values: . In Gradle, debug builds with or flags, e.g., . Monitor StateFlow errors by wrapping emissions in try-catch during collection. Always check for null in KTX extensions, like .
viewModelScope.launch { try { val result = apiCall() } catch (e: Exception) { data.value = "Error: ${e.message}" } }observeviewModel.data.observe(this) { if (it != null) updateUI(it) else showError() }--stacktrace--debug./gradlew build --stacktraceif (context != null) context.startActivity(intent)在协程中使用try-catch块处理异常:。对于LiveData,结合生命周期所有者使用并处理空值:。在Gradle中,使用或标志调试构建,例如。在收集StateFlow数据时,通过try-catch包装发射操作来监控错误。始终检查KTX扩展中的空值,例如。
viewModelScope.launch { try { val result = apiCall() } catch (e: Exception) { data.value = "Error: ${e.message}" } }observeviewModel.data.observe(this) { if (it != null) updateUI(it) else showError() }--stacktrace--debug./gradlew build --stacktraceif (context != null) context.startActivity(intent)Concrete Usage Examples
具体使用示例
- ViewModel with LiveData: Create a ViewModel for user data: . In an activity:
class UserViewModel : ViewModel() { val userData = MutableLiveData<String>() fun loadData() { userData.value = "Loaded" } }. Callval viewModel: UserViewModel by viewModels(); viewModel.userData.observe(this) { textView.text = it }on button click.viewModel.loadData() - Coroutines in ViewModel: Fetch data asynchronously: . Observe in fragment:
class DataViewModel : ViewModel() { fun fetchData() = viewModelScope.launch { val result = withContext(Dispatchers.IO) { apiService.getData() } data.value = result } }.viewModel.data.observe(viewLifecycleOwner) { if (it.isSuccess) showData(it) else handleError() }
- 搭配LiveData的ViewModel:创建用于用户数据的ViewModel:。在Activity中:
class UserViewModel : ViewModel() { val userData = MutableLiveData<String>() fun loadData() { userData.value = "Loaded" } }。点击按钮时调用val viewModel: UserViewModel by viewModels(); viewModel.userData.observe(this) { textView.text = it }。viewModel.loadData() - ViewModel中的协程:异步获取数据:。在Fragment中观察:
class DataViewModel : ViewModel() { fun fetchData() = viewModelScope.launch { val result = withContext(Dispatchers.IO) { apiService.getData() } data.value = result } }。viewModel.data.observe(viewLifecycleOwner) { if (it.isSuccess) showData(it) else handleError() }
Graph Relationships
关联关系
- Related to: mobile cluster (as a sub-skill), kotlin-core skill (shares language base), android-core skill (overlaps on platform), viewmodel skill (direct dependency), coroutines skill (for async handling).
- Connections: Integrates with mobile ecosystem; depends on kotlin for syntax; links to android for platform specifics; collaborates with viewmodel and coroutines tags for advanced features.
- 相关技能:移动技术集群(作为子技能)、kotlin-core技能(共享语言基础)、android-core技能(平台重叠)、viewmodel技能(直接依赖)、coroutines技能(异步处理)。
- 关联连接:与移动开发生态系统集成;依赖Kotlin语法;关联Android平台特性;与viewmodel和coroutines标签协作实现高级功能。