关于Jetpack
Jetpack是一个类库(libraries)、工具(tools)、帮助快易开发构建令人满意的Android App的指导(architectural guidance)集合,它提供了通用的基础代码(code),这样你可以专注于让你app与众不同的工作。
特性
- 快速开发
组件可单独使用,也可以同时工作,当使用kotlin语言特性时,可以让你更有效率 - 消除样板代码
Android Jetpack管理乏味的活动,例如后台任务、导航和生命周期管理,你可以专注于让你的app更棒的东西。 - 构建高质量、健壮的app
基于现代设计实践,Android Jetpack组件可以减少崩溃和内存泄漏,且向后兼容。
组件-可全部使用或者混合搭配
- Foundation Components
包含核心系统能力、Kotlin扩展、混合dex(multidex)和测试自动化支持的组件
4大模块:AppCompat,Android KTX,Multidex,Test - Architecture Components
一个类库的集合,可以帮助你设计健壮、可测、可维护的app。主要为管理UI Components生命周期和处理数据持久化。
8大模块:Data Binding,Lifecycles,LiveData,Navigation,Paging,Room,ViewModel,WorkManager - Behavior Components
一个类库的集合,用于帮助你设计健壮、可测、可维护的app。主要为管理UI Components生命周期和处理数据持久化。
6大模块:DownloadManager,Media&Palyback,Notifications,Permissions,Sharing,Slices - UI Components
不仅仅是更容易,更乐于使用的构建app的类库
8大模块:Animations and Transitions,Auto(汽车),Emoji,Fragment,Layout,Palette,TV,WearOS
Hello Jetpack-创建第一个Jetpack App
- 首先需要AndroidStudio3.2(目前还是Preview release)
- 如下图,创建App过程中选择
Activity&Fragment+ViewModel
,Activity&Fragment+ViewModel
用来更容易的在你的app中集成Jetpack,
`Activity&Fragment+ViewModel`
- 创建完成后目录结构
目录结构.JPG
上图中MainActivity
是App入口,初始化App时的根Activity
MainFragment
,初始化app时的根Fragment
还有一个MainViewModel
,初始化App时调用。
以上三个,还有ui.main
都可以在创建过程中更改名称。 -
直接运行效果
直接运行效果
看看使用Jetpack的好处
- 通过这些碎片,你可以选择实现
ViewModel
对象,如下例:
class StartViewModel : ViewModel() {
private val _data = MutableLiveData<String>()
val data: LiveData<String>
get() = _data
init {
_data.value = "Hello, Jetpack!"
}
}
- 如果你的app包含多个界面,你可以添加
Navigation
类来实现Fragment的导航开关。如下例:
// Set up a click listener on the login button
view?.findViewById<Button>(R.id.navigate_bt)?.setOnClickListener {
// Navigate to the login destination
view?.let { Navigation.findNavController(it).navigate(R.id.end_action) }
编译你的Gradle文件
要使用Jetpack,你必须在Gradle文件中适当的添加几行。因为这个app使用了 ViewModel
, LiveData
, and NavigationController
,gradle包含如下几行:
// LiveData + ViewModel
implementation "android.arch.lifecycle:extensions:$rootProject.archLifecycleVersion"
// Navigation
implementation 'androidx.navigation:navigation-fragment:' + rootProject.navigationVersion
implementation 'androidx.navigation:navigation-ui:' + rootProject.navigationVersion
网友评论