3.24
安卓架构组件(Jetpack Architecture Components)深度解析
Jetpack 架构组件是一套帮助开发者构建高质量安卓应用的库,包括 ViewModel、LiveData、Room 等,它们可以有效分离应用的业务逻辑和 UI,提升代码的可维护性和可测试性。
- ViewModel
ViewModel 用于存储与 UI 相关的数据,并负责处理业务逻辑。它的生命周期独立于 Activity 和 Fragment,避免了因配置变化(如屏幕旋转)导致的数据丢失。
class MainViewModel : ViewModel() {
private val _count = MutableLiveData()
val count: LiveData= _count
init {
_count.value = 0
}
fun increment() {
_count.value = _count.value?.plus(1)
}
}
在 Activity 中使用 ViewModel:
class MainActivity : AppCompatActivity() {
private lateinit var viewModel: MainViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
viewModel = ViewModelProvider(this).get(MainViewModel::class.java)
viewModel.count.observe(this, Observer { value ->
textView.text = "Count: $value"
})
button.setOnClickListener {
viewModel.increment()
}
}
}
- LiveData
LiveData 是一种可观察的数据持有者类,具有生命周期感知能力,只有在相关组件处于活跃状态时才会更新数据,避免了内存泄漏和不必要的更新。 - Room
Room 是安卓的 ORM(对象关系映射)库,用于简化 SQLite 数据库操作。定义一个数据实体类和 DAO(数据访问对象):
@Entity(tableName = "users")
data class User(
@PrimaryKey(autoGenerate = true)
val id: Int = 0,
val name: String,
val age: Int
)
@Dao
interface UserDao {
@Insert
suspend fun insert(user: User)
@Query("SELECT * FROM users")
fun getAll(): LiveData<List>
}
通过使用这些架构组件,可以构建出结构清晰、易于维护的安卓应用架构。