# Android

Binder 扫盲

本文介绍了Binder和AIDL的基本概念和使用方法,并通过与gRPC进行类比,帮助读者更好地理解Binder中各个部分的作用。文章详细介绍了gRPC与Protobuf的使用方法和优势,并通过代码示例演示了如何使用gRPC进行客户端和服务器之间的通信。接着,文章介绍了Binder和AIDL的概念和原理,并通过代码示例演示了如何使用AIDL进行进程间通信。最后,文章简要介绍了AIDL生成的代码中的各个部分的作用,并解释了Binder的工作原理。通过本文的阅读,读者可以对Binder和AIDL有一个基本的了解,并了解它们在Android系统中的应用场景和工作原理。

7 分钟阅读

Jetpack Compose 实现 BottomSheetDialog

引入 Compose 其实是提供了 BottomSheet 的实现方式的,就是用官方的 BottomSheetScaffold ,但是却没有实现 BottomSheetDialog ,导致想要像 Dialog 那样使用 BottomSheetDialog 难以实现,每次都要在外面套一层 BottomSheetScaffold 大大加重了心智负担与嵌套复杂性。因此我将官方的 BottomSheet 实现直接全部 Copy 出来了一份稍作修改,实现独立的 BottomSheetDialog。

8 分钟阅读

Jetpack Compose 中ComposeView 绑定到Dialog中遇到的问题

在Compose 1.2.0-alpha08 以前,可以使用以下代码 Kotlin复制val dialog = Dialog(context) dialog.window?.decorView?.apply { ViewTreeLifecycleOwner.set(this, this@MainActivity) ViewTreeViewModelStoreOwner.set(this, this@MainActivity) ViewTreeSavedStateRegistryOwner.set(this, this@MainActivity) } 在Compose 1.2.0-alpha08以后,ViewTreeSavedStateRegistryOwner的API发生了变更

1 分钟阅读