Android学习笔记(持续更新)

生命周期

区分三个关键类

lifecycle他是一个代表android生命周期及其所处状态的对象

lifecycleOwner是具有生命周期的对象的接口,如AppcompatActivity或Activity、Fragment

lifecycleObserver用于观察生命周期的接口,如LiveData,设置生命周期所有者以观察 LiveData,当生命周期所有者处于活动状态时(STARTEDRESUMED),LiveData 观察器才会观察应用数据的更改。

URI

Uri 是 Uniform Resource Identifier(统一资源标识符)的缩写,用于表示一个资源的唯一标识符。

Uri 可以用于表示除了文件之外的许多类型的资源,包括但不限于以下几种:

  1. 内容提供器(Content Provider):Uri 可以用于访问应用程序中使用的内容提供器,例如 Android 系统提供的联系人、短信、通话记录等数据。

  2. 网络资源:Uri 可以用于表示网络资源,例如网页、图片、音视频等。

  3. 联系人:Uri 可以用于表示联系人的唯一标识符,例如 content://com.android.contacts/contacts/1 表示 ID 为 1 的联系人。

  4. 地理位置:Uri 可以用于表示地理位置的坐标,例如 geo:37.7749,-122.4194 表示旧金山市的经纬度坐标。

  5. Android 资源:Uri 可以用于表示 Android 应用程序中的资源,例如图片、音频、视频等。可以使用 ContentResolver 类从 Uri 对象中读取资源数据。

  6. 其他类型的资源:Uri 还可以用于表示其他类型的资源,例如日历事件、电子邮件等。

Android 版本

Android API 级别与 Android 版本的对应关系:

Android API 级别 Android 版本
31 Android 13
30 Android 12
29 Android 10, 11
28 Android 9
27 Android 8.1
26 Android 8.0
25 Android 7.1
24 Android 7.0
23 Android 6.0
22 Android 5.1
21 Android 5.0
20 Android 4.4W
19 Android 4.4
18 Android 4.3
17 Android 4.2
16 Android 4.1
15 Android 4.0.3
14 Android 4.0
13 Android 3.2
12 Android 3.1
11 Android 3.0
10 Android 2.3.3
9 Android 2.3
8 Android 2.2
7 Android 2.1
6 Android 2.0.1
5 Android 2.0

Android Gradle插件版本与Gradle版本对应

插件版本 所需的最低 Gradle 版本
8.1 8.0
8.0 8.0
7.4 7.5
7.3 7.4
7.2 7.3.3
7.1 7.2
7.0 7.0
4.2.0+ 6.7.1

进入官网

Android Gradle 插件和 Android Studio 兼容性

Android Studio 版本 所需插件版本
Giraffe 2022.3.1 3.2-8.1
Flamingo 2022.2.1 3.2-8.0
Electric Eel 2022.1.1 3.2-7.4
Dolphin 2021.3.1 3.2-7.3
Chipmunk 2021.2.1 3.2-7.2
Bumblebee 2021.1.1 3.2-7.1
Arctic Fox 2020.3.1 3.1-7.0

fragment和fragment生命周期

fragment 就是可重复使用的应用界面片段。与 activity 类似,fragment 具有生命周期并可以响应用户输入。fragment 在屏幕上显示时,会始终包含在 activity 的视图层次结构中。由于 fragment 侧重于可重用性和模块化,因此甚至可以由单个 activity 同时托管多个 fragment。每个 fragment 都管理着自己单独的生命周期。

fragment 生命周期

和 activity 一样,fragment 可以初始化以及从内存中移除;在整个存在期间,fragment 也会在屏幕上显示、消失和重新显示。此外,与 activity 类似,fragment 也有具有多种状态的生命周期,并提供了几种可替换的方法来响应它们之间的转换。fragment 生命周期有五种状态,由 Lifecycle.State 枚举表示。

  • INITIALIZED:fragment 的一个新实例已实例化。

  • CREATED:系统已调用第一批 fragment 生命周期方法。在 fragment 处于此状态期间,系统也会创建与其关联的视图。

  • STARTED:fragment 在屏幕上可见,但没有焦点,这意味着其无法响应用户输入。

  • RESUMED:fragment 可见并已获得焦点。

  • DESTROYED:fragment 对象已解除实例化。

此外,与 activity 类似,Fragment 类还提供了多种可替换的方法来响应生命周期事件。

  • onCreate():fragment 已实例化并处于 CREATED 状态。不过,其对应的视图尚未创建。

  • onCreateView():此方法可用于膨胀布局。fragment 已进入 CREATED 状态。

  • onViewCreated():此方法在创建视图后调用。在此方法中,您通常会通过调用 findViewById() 将特定视图绑定到属性。

  • onStart():fragment 已进入 STARTED 状态。

  • onResume():fragment 已进入 RESUMED 状态,现已具有焦点(可响应用户输入)。

  • onPause():fragment 已重新进入 STARTED 状态。相应界面对用户可见。

  • onStop():fragment 已重新进入 CREATED 状态。该对象已实例化,但它在屏幕上不再显示。

  • onDestroyView():该方法在 fragment 进入 DESTROYED 状态之前调用。视图已从内存中移除,但 fragment 对象仍然存在。

  • onDestroy():fragment 进入 DESTROYED 状态。

下图总结了 fragment 生命周期以及状态之间的转换。


fragment生命周期

生命周期状态和回调方法与用于 activity 的方法非常相似。但请注意 onCreate() 方法的差异。通过 activity,您可以使用此方法膨胀布局和绑定视图。不过,在 fragment 生命周期中,系统会在创建视图之前调用 onCreate(),所以您无法在此处膨胀布局。您可以改为在 onCreateView() 中执行此操作。然后,在创建视图后,系统会调用 onViewCreated() 方法,您可以在该方法中将属性绑定到特定视图。

虽然这可能听起来理论性很强,但您已经基本了解 fragment 的工作原理以及它们与 activity 的相似之处和不同之处。在此 Codelab 的其余部分,您将实际运用这些知识。首先,您需要迁移之前使用的 Words 应用,以使用基于 fragment 的布局。然后,您可以在单个 activity 内的多个 fragment 之间实现导航。

命名规范(下划线开头的属性名)

在 Kotlin 以及一般的编程语言中,通常会遇到以下划线开头的属性名称。这通常表示属性不应直接访问。使用viewBinding时,您可以使用绑定属性访问 XXXFragment 中的视图绑定。不过,您无需在 Fragment 之外访问 _binding 属性。

class XXXFragment: Fragment(){
    private var _binding: FragmentXXXBinding? = null
    private val binding get() = _binding!!
    
    override fun onCreateView(
        inflater: LayoutInflater, container:
        ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        _binding =
        FragmentXXXBinding.inflate(inflater, container, false)
        val view = binding.root
        return view
   }
}

AndroidX

AndroidX 版本 | Android 开发者 | Android Developers

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,907评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,987评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,298评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,586评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,633评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,488评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,275评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,176评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,619评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,819评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,932评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,655评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,265评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,871评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,994评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,095评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,884评论 2 354

推荐阅读更多精彩内容