android 锁屏的生命周期_Activity的生命周期的七个场景
简单介绍Activity生命周期经常调用的几个方法:
onCreate()与onDestroy()
Activity的创建与销毁,处于Activity的entire lifetime完整生命周期
onStart()与onStop()
Activity的可见与不可见,处于Activity的visible lifetime可见生命周期
onResume()与onPause()
Activity的获取焦点与失去焦点,处于Activity的foreground time 前台生命周期
onSaveInstanceState()与onRestoreIntanceState()
保存数据和取出保存的数据,横竖屏切换的时候,两个方法会被同时调用,当然这只是这两个方法同时出现场景之一
onConfiguration()
在Activity的Manifest文件下配置完configChanges属性,如果是横竖屏切换相关值,则在横竖屏切换时会被调用
下面用Activity的使用的七个场景来这些生命周期方法的执行顺序
一、Activity1首次启动
onCreate-->onStart-->onResume
控制台打印效果图
Activity首次启动生命周期调用顺序.png
二、Activity1按返回键并从手机缓存应用列表中启动
onResume-->onPause-->onStop-->onDestroy
再次启动:onCreate-->onStart-->onResume
控制台打印效果图
Activity从手机缓存启动.jpg
三、Activity1按住home键从手机缓存应用列表中再次启动
onResume-->onPause-->onSaveInstanceState-->onStop
再次启动:onRestart-->onStart-->onResume
控制台打印效果图
Home键再从手机缓存启动.jpg
四、Activity1锁屏关闭再开启
onResume-->onPause-->onSaveInstanceState-->onStop
再次启动:onRestart-->onStart-->onResume
控制台打印效果图
锁屏关闭.jpg
五、Activity1启动Activity2
Activity1:onResume-->onPause
Activity2:onCreate-->onStart-->onResume
Activity1:onSaveInstanceState-->onStop
控制台打印效果图
Activity1启动Activity2.jpg
六、Activity1启动Activity2,Activity2退出或者按返回键
Activity2:onResume-->onPause
Activity1:onRestart-->onStart-->onResume
Activity2:onStop-->onDestroy
控制台打印效果图
Activity2被关闭.jpg
七、Activity1横纵屏切换,并做相关配置
竖屏:onCreate-->onStart-->onResume-->onPause-->onSaveInstanceState
-->onStop-->onDestroy
横屏:onCreate-->onStart-->onRestoreInstanceState-->onResume
控制台打印效果图
横纵屏切换.jpg
配置Activity横竖切换不重新创建
android:configChanges="orientation|screenSize"
是在AndroidManifest.xml相应的标签的属性
控制台打印效果图
配置ActivityconfigChanges后生命周期.jpg
Activity1代码块
public class MainActivity extends AppCompatActivity {
static String TAG="dayng";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(savedInstanceState!=null){
Log.i(TAG,"退出时保存的数据"+savedInstanceState.getString("dayang"));
}
Log.i(TAG,"-------MainActivity.onCreate--------");
}
public void onClick(View view){
Intent intent=new Intent(this,Main2Activity.class);
startActivity(intent);
}
@Override
protected void onStart() {
super.onStart();
Log.i(TAG,"-------MainActivity.onStart--------");
}
@Override
protected void onResume() {
super.onResume();
Log.i(TAG,"-------MainActivity.onResume--------");
}
@Override
protected void onPause() {
super.onPause();
Log.i(TAG,"-------MainActivity.onPause--------");
}
@Override
protected void onRestart() {
super.onRestart();
Log.i(TAG,"-------MainActivity.onRestart--------");
}
@Override
protected void onStop() {
super.onStop();
Log.i(TAG,"-------MainActivity.onStop--------");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.i(TAG,"-------MainActivity.onDestroy--------");
}
@Override
protected void onSaveInstanceState(Bundle outState) {
outState.putString("dayang","-----7777777");
super.onSaveInstanceState(outState);
Log.i(TAG,"--------MainActivity.onSaveInstanceState--------");
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
Log.i(TAG,"--------MainActivity.onRestoreInstanceState--------");
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
Log.i(TAG,"--------MainActivity.onConfiguration--------");
}
}
Activity2代码块
public class Main2Activity extends AppCompatActivity {
static String TAG="dayang";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
Log.i(TAG,"-------Main2Activity.onCreate-------");
}
@Override
protected void onStart() {
super.onStart();
Log.i(TAG,"-------Main2Activity.onStart-------");
}
@Override
protected void onResume() {
super.onResume();
Log.i(TAG,"-------Main2Activity.onResume-------");
}
@Override
protected void onPause() {
super.onPause();
Log.i(TAG,"-------Main2Activity.onPause-------");
}
@Override
protected void onStop() {
super.onStop();
Log.i(TAG,"-------Main2Activity.onStop-------");
}
@Override
protected void onRestart() {
super.onRestart();
Log.i(TAG,"-------Main2Activity.onRestart-------");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.i(TAG,"-------Main2Activity.onDestroy-------");
}
public void close(View view){
finish();
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
Log.i(TAG,"-------Main2Activity.onSaveInstanceState-------");
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
Log.i(TAG,"-------Main2Activity.onRestoreInstanceState-------");
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
Log.i(TAG,"-------Main2Activity.onConfiguration-------");
}
}
android 锁屏的生命周期_Activity的生命周期的七个场景相关推荐
- Android 锁屏键和home键分开处理
在做视频直播的时候遇到一个问题,就是Android锁屏状态下与home键状态下SurfaceView的生命周期发生的改变是不相同的. 因为home键与锁屏的时候activity都会走onPause() ...
- android锁屏显示应用程序,今日应用:微软又给 Android 做了一款锁屏应用
微软又做了一款 Android 锁屏应用,质量还不错.如果你已经设置了锁屏,Picturesque可能让你再解锁一次你真的需要在锁屏就处理这么多任务吗? 微软又来给 Android 提供应用了,他们昨 ...
- [Android] Android 锁屏实现与总结 (一)
实现锁屏的方式有多种(锁屏应用.悬浮窗.普通Activity伪造锁屏等等).但国内比较主流并且被广泛应用的Activity伪造锁屏方式. 实例演示图片如下: 系列文章链接如下: [Android] A ...
- android锁屏应用系统排行榜,重塑安卓手机的20大锁屏应用程序
1. AcDisplay 它是一个简单的设计android锁屏应用程序,以简约的方式处理通知.您可以直接从锁定屏幕访问应用程序.它具有使用传感器唤醒设备的活动模式. 兼容性 - Android 4.1 ...
- jQuery仿Android锁屏图案应用
jQuery仿Android锁屏图案应用 在线演示 本地下载 posted @ 2018-12-03 14:08 栖息地 阅读(...) 评论(...) 编辑 收藏
- jQuery仿Android锁屏图案应用插件
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- Android锁屏实现与总结
Android锁屏实现与总结 Android锁屏实现与总结(网易云阅读) 一.自定义锁屏基本原理 二.重要步骤 1.广播注册 2.Activity设置 3.按键的屏蔽 4.滑屏解锁 5.Event b ...
- android 锁屏通知
最近有个需求,说要弄个锁屏通知,通知倒是做过很多了,锁屏通知还真没弄过,经过一番研究,这里做个记录,方便搬砖. 话不多少,直接上效果图: 直接上代码: 安卓系统7以及以下: Notification. ...
- Android 锁屏,息屏情况下打开界面Activity类似微信视频通话接电话时弹出接电话的界面
Android 锁屏,息屏情况下打开界面Activity,类似微信视频通话接电话时弹出接电话的界面 https://blog.csdn.net/yingtian648/article/details/ ...
- android锁屏机制探讨
最近在搜狗输入法实习,研究了一下android系统的锁屏问题,记录一下,相互学习! android锁屏分系统自带的锁屏和第三方的锁屏. 1.系统自带的锁屏的修改需要改android源码,不同的手机厂商 ...
最新文章
- flask 使用 SQLAlchemy 的两种方式
- linux自学笔记——RAID级别特性以及软RAID的实现
- 一个DBA的工作写照
- LeetCode Additive Number(递归)
- springboot有什么好的方案实现 数据实时更新吗?_使用Spring Boot Actuator、Jolokia和Grafana实现准实时监控...
- MZOJ 1344 工作依赖
- SAP Spartacus B2B Org Unit树状结构的ghost数据
- 为网格布局图片打造的超炫 CSS 加载动画
- 避免代码冗余,使用接口和泛型重构Java代码
- linux里的进程简介
- synchronized 异常_由浅入深,Java 并发编程中的 Synchronized
- uc通讯不成功php版本过高,Ucenter通信失败排查方法
- 个人管理:如何发现自己的兴趣?
- 【Elasticsearch】Elasticsearch之元数据(meta-fields)介绍
- [转载] 的士速递4
- $(obj).each 和 $.each() 区别
- 十大必须掌握的机器学习算法,你都知道了吗?
- Qt信号与槽机制详解
- Visio绘制架构图(一)
- Trajan算法(强连通+缩点)