Android学习记录(一) 重拾Activity
2023-09-27 14:28:58 时间
只想记录点什么,给自己留下一些足迹。
学过安卓的人,对于Activity来说并不陌生,它是呈现在我们手机屏幕上面供用户进行操作的界面,它有七个生命周期。当我们创建一个Activity时,它会调用onCreate() 方法,此时的Activity是不可见,不可与用户交互的,接着继续调用onStart() 方法,这时的Activity可见,但还是不可交互,继续调用onResume 方法,Activity可见, 可与用户交互,经过这三个方法的调用,最终我们就可以在这个Activity上面进行操作了,一个Activity的创建也算完成。
当我们按下返回键的时候,此时的Activity会调用onPause(部分可见,不可交互),onStop(不可见,不可交互),onDestroy(程序销毁,释放资源),此时的Activity退出栈,程序销毁。要是重新启动程序,就会重复上面的方法来创建一个Activity。当我们不是按下返回键的时候,而是直接按下home键回到桌面,那么此时的Activity会调onPause,onStop,而不会调用onDestroy来销毁程序。接着打开刚才运行的程序,会发现Activity会调用onRestart(重新启动),onStart,onResume重新呈现在我们的面前。
onCreate() 方法:一般我们在这个方法里面对Activity需要的一些ui控件的进行设置,比如绑定列表的数据,创建一个View等。如果这个方法里面的参数不为空,说明接收到了Activity的状态(一般保存的是一些UI控件的状态),此时这个方法传递进来的参数存放了Activity当前的状态。我们可以进行相应的处理。
onStart()方法:使得Activity对用户可见,当我们想要Activity对用户不可见时,调用onStop()方法。
onResume()方法:使得activity可以与用户交互。此时的Activity处于栈顶。
onPause()方法:使得Activity处于部分可见但是不能操作的状态,当我们正在听歌的时候,突然一个电话进来,那么此时的听音乐的Activity就必须调用此方法,在里面进行暂停音乐播放的操作,让用户更好的去接电话。当然这个方法里面也可以保存一些还没有来得及提交的数据。
onDestroy()方法:销毁Activity,Activity调用的最后一个方法。销毁Activity有两种方法,一个是这个Activity自己调用了finish()方法,或者是系统因为内存不足,临时的关闭了Activity,我们可以用isfinish方法来做一个判断。
这些对Activity的操作构成了Activity是生命周期,明白了这些方法的作用,我们在开发的时候就可以在相应的方法里面进行相应的操作了。
一些疑问:
当我们通过当前的Activity启动另一个Activity的时候,为什么要先把当前的Activity暂停?
答:暂停当前的Activity是为了给用户一个更好的体验,举个例子:我们正在听歌的时候,突然一个电话进来,那么此时的听音乐的Activity就必须调用此方法,在里面进行暂停音乐播放的操作,让用户更好的去接电话。要是不暂停当前的Activity那么用户接电话的时候音乐还在放在是很糟糕的。
当打开新的Activity的时候为什么不直接执行当前的Activity的onPause,onStop方法呢?
答:这是一个保护机制,当前的Activity你执行了onStop方法之后再来执行你要启动的Activity,要是你启动的Activity由于一些原因闪退,而你的当前的Activity又关闭了,那么用户看见的是黑屏,体验不好。
相关文章
- android基础---->摄像头与相册的调用
- Android基础学习
- Android学习笔记————利用JDBC连接服务器数据库
- 再谈Android客户端进程保活
- 腾讯零反射全动态Android插件框架Shadow解析
- 字节跳动Android内部学习资料泄露,隔壁都馋哭了
- 1-3年Android开发工程师面试经验分享,赶紧收藏备战金三银四!
- android学习教程!你了解过移动端适配吗?这原因我服了
- 【技术分享】app自动化测试(Android)—— App 控件定位
- Android学习-应用程序管理
- 编译Android各种错误
- Android ButterKnife使用详解
- 客户端相关知识学习(三)之Android原生与H5交互的实现
- Android JUnit Test——批量运行测试代码
- Android OpenGL 渲染图像读取哪家强
- Android ANR优化 2
- 聊一聊 Android 6.0 的运行时权限
- Android 两种注册、发送广播的区别
- android java.io.IOException: open failed: EBUSY (Device or resource busy)
- Android事件分发机制完全解析,带你从源码的角度彻底理解
- Android databinding之数据单向与双向绑定详解与使用(三)
- Android ConstraintLayout 约束布局 Flow 流式布局,表格布局
- android 一行代码引用所有libs 下面的jar包
- Android自动化测试中AccessibilityService获取控件信息(1)
- 系统深入学习android-Android框架学习-5.设置(Settings)
- 11.Android-Xml读写
- 【Android 内存优化】Bitmap 硬盘缓存 ( Google 官方 Bitmap 示例 | DiskLruCache 开源库 | 代码示例 )
- android的hwc浅析【转】
- qt for Android使用tablewidget模仿滑动窗口效果