安卓开发系列 之生命周期管理

news/2024/7/20 20:38:15 标签: android, 安卓, java, ios, 移动开发

安卓的生命周期管理大致分为:
从生到死的生命周期,对应方法为onCreate和onDestroy;
进出停止态,对应方法为onStart和onStop;
进出暂停态,对应方法为onResume和onPause。

现在以秒表APP场景为例,总结下三种状态的适用场景:
START开始计时,STOP停止计时,RESET从0计时。
在这里插入图片描述

从生到死生命周期为最大的生命周期管理,即一个活动从开始创建到消亡的状态,这时对应一个场景是:如果当安卓屏幕翻转时会依次调用onDestroy和onCreate,这时没有保存翻转前的状态,当想翻转后保存翻转前状态时可以调用onSaveInstanceState方法,当再次启用时取回计数值和是否重置的布尔值。
相关代码为:

java">protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        if(savedInstanceState != null){  //之前的状态
            seconds = savedInstanceState.getInt("seconds");
            running = savedInstanceState.getBoolean("running");
            wasRunning = savedInstanceState.getBoolean("wasRunning");
        }
        runTimer();  //定时器任务,定时取出Seconds值
    }

public void onSaveInstanceState(Bundle savedInstanceState){
        super.onSaveInstanceState(savedInstanceState);
        savedInstanceState.putInt("seconds",seconds);
        savedInstanceState.putBoolean("running",running);
        savedInstanceState.putBoolean("wasRunning",wasRunning);
    }

进出暂停态的使用场景是当按HOME键后APP进入后台,APP暂停计时;当返回前台时继续计时,也需要保存之前的状态值。
相关代码为:

java">protected void onStart() {
        super.onStart();
        if(wasRunning){
            running = true;
        }
    }

protected void onStop() {
        super.onStop();
        wasRunning = running;
        running = false;
    }

进出暂停态的使用场景是当手机可以分屏使用,APP失去焦点后但仍可见,这时需要将APP暂停,当重新获得焦点后继续计时,此种状态为最小的状态。相关代码为:

java">protected void onResume() {
        super.onResume();
        if(wasRunning){
            running = true;
        }
    }

protected void onPause() {
        super.onPause();
        wasRunning = running;
        running = false;
    }

总结:
在这里插入图片描述
从生到死的生命周期为大循环,代表从生到死的循环;
进出停止态为中循环,代表可见与消失的循环;
进出暂停态为小循环,代表获得与失去焦点的循环。

参考资料:
https://www.icourse163.org/learn/BFU-1205989803?tid=1450759471&from=study#/learn/content 移动开发技术MOOC课程


http://www.niftyadmin.cn/n/1223875.html

相关文章

安卓开发系列 之适配器模式

安卓开发中对于数据源有两种填充模式: 对于固定数据:如strings.xml中的string-array,使用android:entries填充; 对于动态数据:Java数组或者database,使用adapter填充。 适配器设计模式: 通常接…

安卓开发系列 之SQLite数据库的使用

SQLite是一种轻量级的数据库,通过框架层JavaAPI访问,是安卓开发中经常使用的一种数据库。有三种常见的类功能: SQLiteOpenHelper:管理数据库,里面有onCreate和onUpgrade方法,onCreate用于建表和插入数据&am…

安卓开发系列 之启动式服务和绑定式服务

服务是无界面的APP组件,可在后台运行,作用是下载文件、缓存音乐、监听消息等,具备更简单的生命周期。 启动式服务可独立于Activity运行,完成任务后停止; 绑定式服务绑定至其它组件,绑定的Activity可与服务互…

系统运维系列 之tomcat服务器上webapps文件夹里的名称与项目名称不一致

背景: 从SVN上下载的项目为了不与原来项目文件夹的项目名称重复,往往会修改成另外一个名称,如AAAAAA重新命名为AAAAAANew,但是在本地或者线上发布后(部署到tomcat上时)还是以原有的项目名进行发布,没有更改成原来的名称…

系统运维系列 之tomcat配置文件server.xml配置含义说明

参考资料: https://www.cnblogs.com/aaron911/p/11006493.html tomcat中server.xml配置详解 这篇博客从理论和基本元素出发,讲解的很详细,值得参考。 https://blog.csdn.net/qq_31957747/article/details/53729530 tomcat配置文件server.xm…

安卓开发系列 之常用工具链接

1 在寻找应用icon时常用的工具库: https://www.iconfont.cn/home/index?spma313x.7781069.1998910419.2 iconfont库,可以选择图片下载格式,改变图片颜色 2 RGB颜色对照表: https://tool.oschina.net/commons?type3 3 github&a…

安卓开发系列 之自定义表格显示数据

Android 自定义TextView控件,用来组成表格方便数据的展示。 首先看一下效果: 实现步骤为: (1)自定义控件 MyTableTextView 继承 TextView 重写onDraw方法。在里面添加话边框的操作。 package lyf.com.mytableview;im…

安卓开发系列 之实现绘制折线图的方法

在安卓开发中实现折线图的方法有MPAndroidChart、XCL-chart、achartenginee和hellochart等,这里利用hellochart进行实现,这种实现方法简单快捷,界面美观,在使用后感觉代码比较清晰,操作时比较流畅,支持饼状…