码个蛋(codeegg)第 792 次推文
作者: _yuanhao_yuanhao_yuanhao_yuanhao
原文: https://juejin.im/post/5db902b7f265da4d39629d6d
码妞看世界
看到地标大楼嘛?
Activity 脑图
在开始之前,先让我们看看的到底都有哪些东西?
借一张网上很火的图带你了解
1.Intent 传递数据大小限制
在传递数据时是有大小限制的,这里官方并未详细说明,不过通过实验的方法可以测出数据应该被限制在之内()
我们采用传递的方法,发现当图片大小超过(准确地说是左右)的时候,程序就会出现闪退、停止运行等异常(不同的手机反应不同)
因此可以判断的传输容量在之内。
2. 怎么保存临时状态
内存不足时系统会杀掉后台的Activity,若需要进行一些临时状态的保存,在哪个方法进行
Activity 的onSaveInstanceState() 和onRestoreInstanceState() 并不是生命周期方法,它们不同于 onCreate() 、onPause() 等生命周期方法,它们并不一定会被触发。
onSaveInstanceState() 方法,当应用遇到意外情况(如:内存不足、用户直接按 Home 键)由系统销毁一个 Activity ,onSaveInstanceState() 会被调用。
但是当用户主动去销毁一个 Activity 时,例如在应用中按返回键,onSaveInstanceState() 就不会被调用。
除非该 activity 不是被用户主动销毁的,通常 onSaveInstanceState() 只适合用于保存一些临时性的状态,而 onPause() 适合用于数据的持久化保存。
3. onSaveInstanceState() 什么时候被执行
系统不知道你按下 HOME 后要运行多少其他的程序,自然也不知道 activity A 是否会被销毁
因此系统都会调用 onSaveInstanceState() ,让用户有机会保存某些非永久性的数据。
以下几种情况的分析都遵循该原则:
当用户按下 HOME 键时
长按 HOME 键,选择运行其他的程序时
锁屏时
从 activity A 中启动一个新的 activity 时
屏幕方向切换时
4. Activity 之间跳转时必然执行什么方法?
一般情况下比如说有两个 activity , 分别叫 A , B ,
当在 A 里面激活 B 组件的时候, A 会调用 onPause() 方法,然后 B 调用 onCreate() , onStart() , onResume() 。
这个时候 B 覆盖了窗体, A 会调用 onStop() 方法。
如果 B 是个透明的,或者 是对话框的样式,就不会调用 A 的 onStop() 方法。
5 除了 Intent,还可以怎么启动一个Activity?
使用adb shell am命令
6. scheme 跳转协议
1. 定义
服务器可以定制化跳转 app 页面
app 可以通过 Scheme 跳转到另一个 app 页面
可以通过 h5 页面跳转 app 原生页面
2. 协议格式
代表协议名称
代表作用的地址域
代表改路径的端口号
代表的是指定页面(路径)
和代表传递的两个参数
3. Scheme使用
定义一个
获取 Scheme 跳转的参数
调用方式
1) 原生调用
2) html调用
3) 判断某个Scheme是否有效
领取专属 10元无门槛券
私享最新 技术干货