Android开发琐记

基础系列

Context

Activity和Service以及Application的Context是不一的,Activity继承自ContextThemeWraper.其他的继承自ContextWrapper.

每一个Activity和Service以及Application的Context是一个新的ContextImpl对象

getApplication()用来获取Application实例的,但是个方法只有在Activity和Service中才能调用的到。那也许在绝大多数情况下我们都是在Activity或者Servic中使用Application的,但是如果在一些其它的场景,比如BroadcastReceiver中也想获得Application的实例,这时就可以借助getApplicationContext()方法,getApplicationContext()比getApplication()方法的作用域会更广一些,任何一个Context的实例,只要调用getApplicationContext()方法都可以拿到我们的Application对象。

创建对话框时不可以用Application的context,只能用Activity的context。

Context的数量等于Activity的个数 + Service的个数 +1,这个1为Application

Parcelable和Serializable的区别和比较

Parcelable和Serializable都是实现序列化并且都可以用于Intent间传递数据,
Serializable是Java的实现方式,基于设备存储的持久化,可能会频繁的IO操作,所以消耗比较大,但是实现方式简单
Parcelable是Android提供的方式,基于共享内存的“持久化”,效率比较高,但是实现起来复杂一些 ,

二者的选取规则是:
内存序列化上选择Parcelable, 存储到设备或者网络传输上选择Serializable(当然Parcelable也可以但是稍显复杂)

详细原理及使用参考:
https://blog.csdn.net/justin_1107/article/details/72903006

实战技巧

onSaveInstanceState() 与onRestoreIntanceState()

Activity退出时,系统回调onSaveInstanceState() 来保存界面现场信息,
再次进入Activity时,系统回调onRestoreIntanceState() 来恢复界面现场信息。

但以下除外:
用户主动去销毁一个Activity的时候,用户按下back,不会调用 ,
代码中finish(),不会调用。

那什么情况下调用?
原则:
onSaveInstanceState的调用遵循一个重要原则,即当系统“未经你许可”时销毁了你的activity,则onSaveInstanceState会被系统调用,这是系统的责任,因为它必须要提供一个机会让你保存你的数据(当然你不保存那就随便你了)。

情况:
1、当用户按下HOME键时。
2、长按HOME键,选择运行其他的程序时。
3、按下电源按键(关闭屏幕显示)时。
4、从activity A中启动一个新的activity时。
(以上四种情况,其实都是Activity切换,需要等到系统回收Activity资源,强杀Activity时,才会回调onSaveInstanceState,而不是切换时回调)

5、屏幕方向切换时,导致Activity销毁时
未正确配置android:configurations时,会导致切屏,Activity销毁
https://blog.csdn.net/Hendy_Raw/article/details/82107132

在屏幕切换之前,系统会销毁activity A,在屏幕切换之后系统又会自动地创建activity A,所以onSaveInstanceState一定会被执行
(案例:笔记应用在切屏时,就需要保存草稿内容)

另外:
用户在recent任务中强杀应用,用户在设置中强杀应用,会调用吗?待验证

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值