文档章节

Activity的生命周期

YYP愿有岁月可回首
 YYP愿有岁月可回首
发布于 2016/03/03 23:08
字数 764
阅读 16
收藏 0
点赞 1
评论 0

记录学习Android的第一周(Activity的生命周期是活的,只有自己摸索才能掌握)


   每一个Activity都有生命周期,不同周期阶段运行不同函数,这些状态对于一个Android应用状态至关重要。

比如说:我们做了一个基于Android手机社交软件,在一个Activity发送消息界面中,我们准备给朋友发送消息,刚撰写完成,正欲发送消息的时候,突然来了一个电话呼入,系统界面完全跳到电话应用Activity界面,等通话结束返回到我们的Activity发送消息界面,我们希望我们原先写的消息还存在,我们可以继续编写或发送消息。这种情况下,我们必须要深入了解Activity的生命周期,在相应的函数中保存、恢复我们的数据。

Activity在生命周期不同阶段对应的部分运行函数的相应代码如下:

package com.example.jsjzx.myapplication;

import android.os.PersistableBundle;
import android.provider.Settings;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

public class MainActivity extends ActionBarActivity {
    StringBuilder sb=new StringBuilder();//为什么不用StringBuffer?考虑到线程安全
    int i=1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       // Toast.makeText(this,"hello world",Toast.LENGTH_LONG).show();
       // System.out.println("hello world");
        sb.append(i++);
        sb.append(".OnCreate-->");
        Toast.makeText(this,sb.toString(),Toast.LENGTH_LONG).show();
    }

    @Override
    protected void onStop() {
        super.onStop();
        sb.append(i++);
        sb.append(".OnStop-->");
        Toast.makeText(this,sb.toString(),Toast.LENGTH_LONG).show();
    }

    @Override
    protected void onStart() {
        super.onStart();
        sb.append(i++);
        sb.append(".OnStart-->");
        Toast.makeText(this,sb.toString(),Toast.LENGTH_LONG).show();
    }

    @Override
    protected void onResume() {
        super.onResume();
        sb.append(i++);
        sb.append(".onResume-->");
        Toast.makeText(this,sb.toString(),Toast.LENGTH_LONG).show();
    }

    @Override
    protected void onPause() {
        super.onPause();
        sb.append(i++);
        sb.append(".onPause-->");
        Toast.makeText(this,sb.toString(),Toast.LENGTH_LONG).show();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        sb.append(i++);
        sb.append(".onDestroy-->");
        Toast.makeText(this,sb.toString(),Toast.LENGTH_LONG).show();
    }

    @Override
    protected void onRestart() {
        super.onRestart();
        sb.append(i++);
        sb.append(".onRestart-->");
        Toast.makeText(this,sb.toString(),Toast.LENGTH_LONG).show();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

Activity常见运行状态说明:

(1).   当打开一个Android应用程序的时候,会先后依次执行该程序主Activity的onCreate()->onStart()->onResume()三个方法。

(2).   当退出程序(或者点击BACK键),会先后依次执行该Activity的

onPause()->onStop()->onDestory()三个方法。

(3).   打开应用程序运行时,突然有电话呼入,Activity会先后依次执行了

onPause()->onStop()这两个方法,这时候应用程序并没有销毁。

(4).   而当再次启动该Android应用程序时,则会先后依次执行了

onRestart()->onStart()->onResume()三个方法。

(5).   当按HOME键,然后再次进入Activity应用时,该应用的状态应该是和按HOME键之前的状态是一样的。所以,大多数情况下可以在onPause()里面保存一些数据和状态。而在onResume()里面来恢复数据。



© 著作权归作者所有

共有 人打赏支持
YYP愿有岁月可回首
粉丝 0
博文 2
码字总数 990
作品 0
程序员

暂无相关文章

那些证书相关的玩意儿(SSL,X.509,PEM,DER,CRT,CER,KEY,CSR,P12等)

之前没接触过证书加密的话,对证书相关的这些概念真是感觉挺棘手的,因为一下子来了一大堆新名词,看起来像是另一个领域的东西,而不是我们所熟悉的编程领域的那些东西,起码我个人感觉如此,且很长...

颖辉小居 ⋅ 15分钟前 ⋅ 0

利用有限制通配符提升API灵活性(28)

1、参数化类型是不可变的 List<String> 不是List<Object>的子类,但是二者是有联系的 利用有限制的通配符类型处理类似情况 List<? extends Object>(生产者) Collection<? super E>(消费者......

职业搬砖20年 ⋅ 21分钟前 ⋅ 0

ssm框架 +bootstrap分页

这里有两种方式 方式一:自己写分页 方式二:使用插件PageHelper 1.自己写分页 1.1 效果 1.2 实现过程 1.2.1 创建分页公共类 //---------------------------1.属性-------------------------...

Lucky_Me ⋅ 28分钟前 ⋅ 0

Istio

helm template install/kubernetes/helm/istio --name istio --namespace istio-system > $HOME/istio.yaml after $ kubectl create namespace istio-system$ kubectl create -f $HOME/ist......

openthings ⋅ 29分钟前 ⋅ 0

内核线程、轻量级进程、用户线程

线程与进程概念 在现代操作系统中,进程支持多线程。 进程是资源管理的最小单元; 线程是程序执行的最小单元。 即线程作为调度和分配的基本单位,进程作为资源分配的基本单位 一个进程的组成...

117 ⋅ 34分钟前 ⋅ 0

elasticsearch2.4.6升级为elasticsearch-5.5.0的经历

将elasticsearch-5.5.0 中的配置 path.data 指向原来的数据路径 即 path.data: /usr/local/src/elasticsearch-2.4.6/data 注意: elasticsearch-5.5.0 需要将jdk版本升级到1.8...

晨猫 ⋅ 34分钟前 ⋅ 1

lvm讲解 磁盘故障小案例

1

oschina130111 ⋅ 38分钟前 ⋅ 0

那些提升开发人员工作效率的在线工具

本文转载自公众号 Hollis 作为一个Java开发人员,经常要和各种各样的工具打交道,除了我们常用的IDE工具以外,其实还有很多工具是我们在日常开发及学习过程中要经常使用到的。 Hollis偏爱使用...

时刻在奔跑 ⋅ 51分钟前 ⋅ 0

restful风格 实现DELETE PUT请求 的web.xml的配置

import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframe......

泉天下 ⋅ 56分钟前 ⋅ 0

Shell数组

Shell数组 Shell在编程方面比Windows批处理强大很多,无论是在循环、运算。 bash支持一维数组(不支持多维数组),并且没有限定数组的大小。类似与C语言,数组元素的下标由0开始编号。获取数...

蜗牛奔跑 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部