文档章节

Activity的生命周期

YYP愿有岁月可回首
 YYP愿有岁月可回首
发布于 2016/03/03 23:08
字数 764
阅读 16
收藏 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
程序员

暂无文章

Python爬虫:Scrapy框架的安装和基本使用

大家好,本篇文章我们来看一下强大的Python爬虫框架Scrapy。Scrapy是一个使用简单,功能强大的异步爬虫框架,我们先来看看他的安装。 Scrapy的安装 Scrapy的安装是很麻烦的,对于一些想使用S...

糖宝lsh
19分钟前
1
0
Android Dialog几种对话框

1,普通对话框 2,单选对话框 3,多选对话框 4,日期选择对话框 5,时间选择对话框 6,日期选择对话框 7,进度条对话框 普通对话框 AlertDialog.Builder builder = new AlertDialog.Builde...

lanyu96
26分钟前
0
0
awk命令

-F选项的作用是指定分隔符。如果不加-F选项,则以空格或者tab为分隔符。print为打印操作,用来打印某个字段。$1为第1个字段,$2为第2个字段,以此类推。但是$0比较特殊,它表示整行: [root@cen...

野雪球
33分钟前
0
0
一切都靠大数据:滴滴已封禁4.3万人员、车辆

这段时间以来,滴滴出行相继出炉了各种整改措施,包括自身安全建设和外部社会共建,昨日就刚刚宣布正在筹备建立安全监督顾问委员会。 据媒体最新报道,9月30日,上海市交通委员会执法总队、上...

linuxCool
52分钟前
4
0
awk命令用法介绍

10月18日任务 9.6/9.7 awk 1.awk(上)(下) 1.awk 分段操作功能 指定分隔符,并把第一段打印出来,不会改动文件内容 将所有内容打印出来 awk 没有指定分隔符号,则会默认用空格或者空白字符...

hhpuppy
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部