文档章节

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
程序员

暂无文章

【七】组合Action

本章描述了常用定义Action的方法。 自定义action builders 我们在action一章已经看过如何声明一个action——有request parameter、无request parameter、有body parser等等。你可以在 asynch...

Landas
34分钟前
0
0
Spring Boot实战之基础回顾

本文作者: 吴伟祥 本文链接: https://wuweixiang.cn/2018/08/21/Spring-Boot实战之基础回顾/ 版权声明: 本博客所有文章除特别声明外均为原创,采用CC BY-NC-SA 4.0 许可协议。转载请在文章开...

吴伟祥
34分钟前
0
0
OAuth认证开发

提示: 以下测试是基于项目安装成功,初始化数据库(initial_db.ddl, oauth.ddl, initial_data.ddl)后的测试, 也可在页面上点击"client_details"菜单里进行测试 方式1:基于浏览器 (grant_type=...

舒文joven
43分钟前
1
0
第二章-对象及变量的并发访问-第二篇

锁对象的改变 请阅读如下代码 public class MainClass { private String lock = "123"; public void printStringB() { try { synchronized (lock) { ......

简心
46分钟前
0
0
日志中记录代理IP以及真实客户端、apache只记录指定URI的日志

apache 日志中记录代理IP以及真实客户端 默认情况下log日志格式为: LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined 其中%h 是记录访问者的IP,如果在web的前...

李超小牛子
55分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部