简单介绍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的生命周期的七个场景相关推荐

  1. Android 锁屏键和home键分开处理

    在做视频直播的时候遇到一个问题,就是Android锁屏状态下与home键状态下SurfaceView的生命周期发生的改变是不相同的. 因为home键与锁屏的时候activity都会走onPause() ...

  2. android锁屏显示应用程序,今日应用:微软又给 Android 做了一款锁屏应用

    微软又做了一款 Android 锁屏应用,质量还不错.如果你已经设置了锁屏,Picturesque可能让你再解锁一次你真的需要在锁屏就处理这么多任务吗? 微软又来给 Android 提供应用了,他们昨 ...

  3. [Android] Android 锁屏实现与总结 (一)

    实现锁屏的方式有多种(锁屏应用.悬浮窗.普通Activity伪造锁屏等等).但国内比较主流并且被广泛应用的Activity伪造锁屏方式. 实例演示图片如下: 系列文章链接如下: [Android] A ...

  4. android锁屏应用系统排行榜,重塑安卓手机的20大锁屏应用程序

    1. AcDisplay 它是一个简单的设计android锁屏应用程序,以简约的方式处理通知.您可以直接从锁定屏幕访问应用程序.它具有使用传感器唤醒设备的活动模式. 兼容性 - Android 4.1 ...

  5. jQuery仿Android锁屏图案应用

    jQuery仿Android锁屏图案应用 在线演示 本地下载 posted @ 2018-12-03 14:08 栖息地 阅读(...) 评论(...) 编辑 收藏

  6. jQuery仿Android锁屏图案应用插件

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  7. Android锁屏实现与总结

    Android锁屏实现与总结 Android锁屏实现与总结(网易云阅读) 一.自定义锁屏基本原理 二.重要步骤 1.广播注册 2.Activity设置 3.按键的屏蔽 4.滑屏解锁 5.Event b ...

  8. android 锁屏通知

    最近有个需求,说要弄个锁屏通知,通知倒是做过很多了,锁屏通知还真没弄过,经过一番研究,这里做个记录,方便搬砖. 话不多少,直接上效果图: 直接上代码: 安卓系统7以及以下: Notification. ...

  9. Android 锁屏,息屏情况下打开界面Activity类似微信视频通话接电话时弹出接电话的界面

    Android 锁屏,息屏情况下打开界面Activity,类似微信视频通话接电话时弹出接电话的界面 https://blog.csdn.net/yingtian648/article/details/ ...

  10. android锁屏机制探讨

    最近在搜狗输入法实习,研究了一下android系统的锁屏问题,记录一下,相互学习! android锁屏分系统自带的锁屏和第三方的锁屏. 1.系统自带的锁屏的修改需要改android源码,不同的手机厂商 ...

最新文章

  1. flask 使用 SQLAlchemy 的两种方式
  2. linux自学笔记——RAID级别特性以及软RAID的实现
  3. 一个DBA的工作写照
  4. LeetCode Additive Number(递归)
  5. springboot有什么好的方案实现 数据实时更新吗?_使用Spring Boot Actuator、Jolokia和Grafana实现准实时监控...
  6. MZOJ 1344 工作依赖
  7. SAP Spartacus B2B Org Unit树状结构的ghost数据
  8. 为网格布局图片打造的超炫 CSS 加载动画
  9. 避免代码冗余,使用接口和泛型重构Java代码
  10. linux里的进程简介
  11. synchronized 异常_由浅入深,Java 并发编程中的 Synchronized
  12. uc通讯不成功php版本过高,Ucenter通信失败排查方法
  13. 个人管理:如何发现自己的兴趣?
  14. 【Elasticsearch】Elasticsearch之元数据(meta-fields)介绍
  15. [转载] 的士速递4
  16. $(obj).each 和 $.each() 区别
  17. 十大必须掌握的机器学习算法,你都知道了吗?
  18. Qt信号与槽机制详解
  19. Visio绘制架构图(一)
  20. Trajan算法(强连通+缩点)

热门文章

  1. selenium firefox 启动报错 Timed out wating 45 seconds for firefox to start
  2. 想要报考华为技术认证,你一定要了解这些
  3. win7不显示移动硬盘_如何在移动硬盘中安装win10系统?
  4. Keil暗色模式配置文件
  5. 【运维】第二节 Prometheus 简介
  6. Kotlin版本的新闻类APP 简闻
  7. ATECC508A芯片开发笔记(一):初识加密芯片
  8. 铁矿石大幅反弹,棉花认购大涨2倍,YP09继续探底2022.4.28
  9. 流水线扫描条码自动分拣方案
  10. 全球及中国丝蛋白行业研究及十四五规划分析报告