划重点 | Android Jetpack 三大重要更新!
Jetpack
https://developer.android.google.cn/jetpack
新发布到 Alpha 版本的库
Hilt — Jetpack 官方推荐的依赖注入开发库
Hilt 是一个新的 Android 开发库,它可以帮助应用开发更容易地实现依赖注入。Hilt 让您只需考虑声明和注入绑定中的重要部分,而不必担心管理依赖注入的初始化和连接等部分。
依赖注入 https://developer.android.google.cn/training/dependency-injection
ViewModel https://developer.android.google.cn/reference/androidx/lifecycle/ViewModel @ViewModelInject http://developer.android.google.cn/training/dependency-injection/hilt-jetpack @AndroidEntryPoint https://developer.android.google.cn/training/dependency-injection/hilt-android
<!-- Copyright 2019 Google LLC.
SPDX-License-Identifier: Apache-2.0 -->
class SearchViewModel @ViewModelInject constructor(
private val repository: SearchRepository
): ViewModel() { … }
@AndroidEntryPoint
class SearchFragment : Fragment() {
val viewModel: SearchViewModel by viewModels()
}
发布的博客文章 https://medium.com/androiddevelopers/dependency-injection-on-android-with-hilt-67b6031e62d
<!-- Copyright 2019 Google LLC.
SPDX-License-Identifier: Apache-2.0 -->
class MyPagingSource : PagingSource<Key, Value>() {
override suspend fun load(params: LoadParams<Key>): LoadResult<Key, Value> {
try {
val result = api.requestPage(params.key)
return Page(
data = result.items,
nextKey = result.nextKey
)
} catch(error: IOException) {
return Error(error)
}
}
}
获取更多 Paging 3 信息,请查阅:
官方文档 https://developer.android.google.cn/paging3
App Startup — 在应用启动时初始化组件
<!-- Copyright 2019 Google LLC.
SPDX-License-Identifier: Apache-2.0 -->
// Initializes WorkManager.
class WorkManagerInitializer : Initializer<WorkManager> {
override fun create(context: Context): WorkManager {
val configuration = Configuration.Builder().build()
WorkManager.initialize(context, configuration)
return WorkManager.getInstance(context)
}
override fun dependencies(): List<Class<out Initializer<*>>> {
return emptyList()
}
}
官方文档 https://developer.android.google.cn/topic/libraries/app-startup
Autofill
https://developer.android.google.cn/jetpack/androidx/releases/autofill
△ 软键盘显示信用卡号码自动填充内容
利用 core-animation 和 SeekableAnimatedVectorDrawable 来轻松创建动画
androidx.core:core-animation 和 androidx.core:core-animation-testing https://developer.android.google.cn/jetpack/androidx/releases/core#core-animation_and_core-animation-testing_100_2 SeekableAnimatedVectorDrawable https://developer.android.google.cn/reference/androidx/vectordrawable/graphics/drawable/SeekableAnimatedVectorDrawable androidx.vectordrawable https://developer.android.google.cn/jetpack/androidx/releases/vectordrawable
Animator https://developer.android.google.cn/reference/android/animation/Animator
SeekableAnimatedVectorDrawable https://developer.android.google.cnreference/androidx/vectordrawable/graphics/drawable/SeekableAnimatedVectorDrawable AnimatedVectorDrawable https://developer.android.google.cn/reference/android/graphics/drawable/AnimatedVectorDrawable
△ 在 Android Studio 中使用数据库检查器
有了 Android Studio 4.1 Beta 新发布的 Database Inspector,数据库调试变得十分简单。这个工具可以在正在运行的应用中查看、检索以及修改数据库的内容。无论是使用 Room 还是直接使用 SQLite,您都可以通过菜单栏中的 View > Tool Windows > Database Inspector 开始调试数据库。请通过我们的文章《期待已久的动态数据库工具终于来了!》了解更多关于这个工具的内容以及如何使用它。
Database Inspector
https://developer.android.google.cn/studio/preview/features#database-inspector
初始的发布版本提供了对于市面上已有以及即将上市的不同可折叠设备的支持,开发者可以利用其适配所有不同类型的硬件配置。了解更多相关内容,请查阅:
博客文章 https://medium.com/androiddevelopers/support-new-form-factors-with-the-new-jetpack-windowmanager-library-4be98f5450da 示例工程 https://github.com/android/user-interface-samples/tree/master/WindowManager WindowManager
https://developer.android.google.cn/jetpack/androidx/releases/window
MotionLayout API
https://developer.android.google.cn/training/constraint-layout/motionlayout
对于已有开发库的更新
Navigation 库
Navigation 2.3 https://developer.android.google.cn/jetpack/androidx/releases/navigation Dynamic Delivery 功能模块 https://developer.android.google.cn/guide/app-bundle/dynamic-delivery
返回结果 https://developer.android.google.cn/guide/navigation/navigation-programmatic#returning_a_result SavedStateHandle https://developer.android.google.cn/reference/androidx/lifecycle/SavedStateHandle TestNavHostController https://developer.android.google.cn/reference/kotlin/androidx/navigation/testing/TestNavHostController
WorkManager 库
最新发布的 WorkManager https://developer.android.google.cn/jetpack/androidx/releases/work
Recently completed work:
Id Class Name Job Id State Unique Name Tags
88e31476–50d5–4a3a-855a-7c158d61543e com.example.DiagnosticsWorker null SUCCEEDED com.example.DiagnosticsWorker
939d3d81–4a24–4920-ab6a-2a5b850f377b com.example.ToastWorker null SUCCEEDED com.example.ToastWorker
59ab8eb1–2645–446d-8811–1e7b887ab5bc com.example.ForegroundWorker null CANCELLED com.example.ForegroundWorker
7a6c23d2-a1f9–4477-af77–1f16b45cd765 com.example.ForegroundWorker 0 SUCCEEDED com.example.ForegroundWorker
Running work:
Id Class Name Job Id State Unique Name Tags
7c8bc01f-a60c-4b63-a6aa-2055d4d9d88e com.example.DiagnosticsWorker 4 RUNNING com.example.DiagnosticsWorker
Worker 的中间进度 https://developer.android.google.cn/topic/libraries/architecture/workmanager/how-to/intermediate-progress?hl=en
△ 在 Android Studio 中查看抽样的堆栈信息
Benchmark 库发布了一个新的 alpha release: 1.1.0-alpha01 https://developer.android.google.cn/jetpack/androidx/releases/benchmark CPU 性能剖析工具 https://developer.android.google.cn/benchmark#profiling
权限库 (Permissions)
ActivityResult https://developer.android.google.cn/training/basics/intents/result RequestPermission https://developer.android.google.cn/reference/androidx/activity/result/contract/ActivityResultContracts.RequestPermission requestPermissions https://developer.android.google.cn/reference/android/app/Activity#requestPermissions(java.lang.String%5B%5D,%20int) 选取图片 https://developer.android.google.cn/reference/androidx/activity/result/contract/ActivityResultContracts.TakePicture?hl=en 打开一个文件 https://developer.android.google.cn/reference/androidx/activity/result/contract/ActivityResultContracts.OpenDocument?hl=en
游戏 SDK
帧同步 API
https://developer.android.google.cn/games/sdk/frame-pacing官方文档 https://developer.android.google.cn/games/sdk
CameraX 库
最近的版本 https://developer.android.google.cn/jetpack/androidx/releases/camera PreviewView https://developer.android.google.cn/reference/androidx/camera/view/PreviewView?hl=en SurfaceView https://developer.android.google.cn/reference/android/view/SurfaceView
CameraX 文档
https://developer.android.google.cn/training/camerax
示例工程
https://github.com/android/camera-samples
Security 库 https://developer.android.google.cn/topic/security/data EncryptedFile https://developer.android.google.cn/reference/androidx/security/crypto/EncryptedFile EncryptedSharedPreferences https://developer.android.google.cn/reference/androidx/security/crypto/EncryptedSharedPreferences Keystore https://developer.android.google.cn/training/articles/keystore Jetpack 的 Security 开发库 https://developer.android.google.cn/jetpack/androidx/releases/security
AppCompat https://developer.android.google.cn/topic/libraries/support-library/packages#v7-appcompat Toolbar https://developer.android.google.cn/reference/androidx/appcompat/widget/Toolbar 最新的发布 https://developer.android.google.cn/jetpack/androidx/releases/appcompat
Webkit 库
Webkit https://developer.android.google.cn/guide/webapps/webview 1.2.0 版本 https://developer.android.google.cn/jetpack/androidx/releases/webkit WebView https://developer.android.google.cn/reference/android/webkit/WebView
Jetpack Compose — 全新的 Android UI 开发框架
Jetpack Compose 是全新的现代 Android UI 开发框架,目前发布了开发者预览第二版。新版本添加了许多新功能,包括视图组件的互通性、更多的 Material UI 组件、支持深色主题、新的 UI 测试和动画 API、对于 ConstraintLayout 的支持、优化状态管理、集成可观察的数据流和 RTL 支持。Android Studio 预览现在是可交互的,并且还有很多编译器方面的优化。
Jetpack Compose https://developer.android.google.cn/jetpack/compose
腾讯视频链接
https://v.qq.com/x/page/t31164jn0g7.html
Bilibili 视频链接
https://www.bilibili.com/video/BV1Vv411q7Hn/
向我们反馈 https://issuetracker.google.com/issues/new?component=612128
重新设计了 Jetpack 网站 https://developer.android.google.cn/jetpack?hl=en
推荐阅读