Activity学习(一):生命周期

一、 认识Activity

Activity是Android的四大组件之一,那么它是什么呢?如果简单的理解,可以把它当成应用的一个显示的屏幕。
Activity类处于android.app包中,继承体系如下: 
java.lang.Object 
android.content.Context 
android.app.ApplicationContext 
android.app.Activity

Activity是单独的,用于处理用户操作。开发人员可以通过 setContentView(View)接口把UI放到Activity创建的窗口上,大部分的 Activity子类都需要实现以下两个方法:
onCreate(Bundle)方法是初始化Activity的地方. 在这儿通常可以调用setContentView(int)设置在资源文件中定义的UI, 使用findViewById(int) 可以获得UI中定义的窗口. 
onPause()方法是使用者准备离开Activity的地方,在这儿,任何的修改都应该被提交(通常用于ContentProvider保存数据). 
程序定义的Activity必须在AndroidManifest.xm文件中进行配置,否则不能使用。

二、 Activity的生命周期

2.1 首先我们看看Activity的生命周期图

理解Activity的生命周期:

public class FirstActivity extends Activity
{
    private Button btn1;
    private Button btn2;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        System.out.println("----onCreate----");

        setContentView(R.layout.main);

        this.btn1 = (Button) findViewById(R.id.btn1);
        this.btn1.setOnClickListener(new OnClickListenerImpl());
        this.btn2 = (Button) findViewById(R.id.btn2);
        this.btn2.setOnClickListener(new OnClickListenerImpl());

    }

    @Override
    protected void onStart()
    {
        super.onStart();

        System.out.println("----onStart----");
    }

    @Override
    protected void onRestart()
    {
        super.onRestart();

        System.out.println("----onRestart----");
    }

    @Override
    protected void onPause()
    {
        // TODO Auto-generated method stub
        super.onPause();
        System.out.println("----onPause----");
    }

    @Override
    protected void onResume()
    {
        super.onResume();

        System.out.println("----onResume----");
    }

    @Override
    protected void onStop()
    {
        super.onStop();

        System.out.println("----onStop----");
    }

    @Override
    protected void onDestroy()
    {
        super.onDestroy();

        System.out.println("----onDestroy----");
    }

    private class OnClickListenerImpl implements OnClickListener
    {

        @Override
        public void onClick(View v)
        {
            int id = v.getId();
            switch (id)
            {
                case R.id.btn1:
                    Intent i1 = new Intent(FirstActivity.this, SecondActivity.class);
                    FirstActivity.this.startActivity(i1);
                    break;
                case R.id.btn2:
                    Intent i2 = new Intent(FirstActivity.this, ThirdActivity.class);
                    FirstActivity.this.startActivity(i2);
                    break;
                default:
                    break;
            }
        }

    }
}

接下来,我们测试,直接启动应用;

这时,我们点击返回键:

我们重启启动界面,点击第一个按钮,进入第二个界面,然后再点击返回按钮,可看到日志输出:

我们修改ThirdActivity的样式,使其变成一个弹出框式的Activity,只需要再配置该Activity时指定:

<activity
      android:name=".ThirdActivity"
      android:theme="@android:style/Theme.Dialog" ><span style="font-family: Arial, Helvetica, sans-serif;"></activity></span>

接着,我们重启启动该应用,并点击btn2,可看到日志输出:

我们可以看出,以为ThirdActivity是对话框风格的,所以启动后,FirstActivity并非不可见,只是失去了焦点,所以其并没有进入onStop()方法中,所以在返回到该Activity时,是直接进入了onResume方法,而并没有重启启动(onResult()和onStart()).

三、 Activity生命周期的使用场景

3.1 onDestory的应用:

比如我们开发一个应用,需要用户输入数据,而如果用户一不小心把应用关闭了,那数据就丢失了。 所以,友好的应用应该是我们需要在onDestory()方法中,将用户输入的信息保存下来(文件中),然后在onCreate方法里,再把它取出来。

3.2 onStart的应用:测试网络的环境:

我们希望,当用户进入到界面上时,检查网络,如果网络不可用,则跳转到网络设置界面,而且,必须是用户设置网络成功后,才可行,不然就一直让用户设置网络。 此时,我们可以使用onStart方法,onStart方法是在Activity可见时调用的。

    @Override
    protected void onStart()
    {
        super.onStart();

        ConnectivityManager cm = (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo info = cm.getActiveNetworkInfo();
        if (info != null && info.isConnected())
        {
            Toast.makeText(this, "网络可用", Toast.LENGTH_SHORT).show();
        }
        else
        {
            Toast.makeText(this, "网络不可用", Toast.LENGTH_SHORT).show();
            Intent intent = new Intent();
            intent.setClassName("com.android.setting", "com.android.setting.WirelessSettings");
            startActivity(intent);
        }

        System.out.println("----onStart----");
    }
时间: 2024-10-28 19:57:18

Activity学习(一):生命周期的相关文章

Android编程中activity的完整生命周期实例详解_Android

本文实例分析了Android编程中activity的完整生命周期.分享给大家供大家参考,具体如下: android中 activity有自己的生命周期,对这些知识的学习可以帮助我们在今后写程序的时候,更好的理解其中遇到的一些错误.这篇文章很长,希望不要耽误大家的时间- 今天不会涉及太多关于activity栈的东西,主要说activity自身的生命周期 区分几个概念 1 Activity 官方解释为 "An Activity is an application component that pro

Android编程中activity的完整生命周期实例详解

本文实例分析了Android编程中activity的完整生命周期.分享给大家供大家参考,具体如下: android中 activity有自己的生命周期,对这些知识的学习可以帮助我们在今后写程序的时候,更好的理解其中遇到的一些错误.这篇文章很长,希望不要耽误大家的时间- 今天不会涉及太多关于activity栈的东西,主要说activity自身的生命周期 区分几个概念 1 Activity 官方解释为 "An Activity is an application component that pro

Android开发之Activity和Fragment生命周期对比图

一.Activity 生命周期 二.Fragment 生命周期 三.对比图 四.测试代码 [java] view plaincopy package com.goso.testapp;      import android.app.Activity;   import android.app.ListFragment;   import android.os.Bundle;   import android.util.Log;   import android.view.LayoutInfla

Android四大组件之——Activity的生命周期(图文详解)

      转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai       联系方式:JohnTsai.Work@gmail.com       [Android四大组件学习系列Activity篇]       1.Android四大组件之--Activity(一)定义.状态和后退栈(图文详解)       2.Android四大组件之--Activity的生命周期(图文详解)      上一篇文章讲了Activity的定义.状态和后退栈,现在讲讲A

Android开发艺术探索笔记——第一章:Activity的生命周期和启动模式

Android开发艺术探索笔记--第一章:Activity的生命周期和启动模式 怀着无比崇敬的心情翻开了这本书,路漫漫其修远兮,程序人生,为自己加油! 一.序 作为这本书的第一章,主席还是把Activity搬上来了,也确实,和Activity打交道的次数基本上是最多的,而且他的内容和知识点也是很多的,非常值得我们优先把他掌握,Activity中文翻译过来就是"活动"的意思,但是主席觉得这样翻译有些生硬,直接翻译成"界面"可能更好,的确,Activity主要也是用于U

Android开发中Activity的生命周期及加载模式详解

本文给大家介绍Activity的生命周期,如果大家学习过iOS的小伙伴的话,Activity的生命周期和iOS中ViewController的生命周期非常类似.生命周期,并不难理解.一个人的生命周期莫过于生老病死,花儿的生命周期就是花开花谢了.在Android中Activity的生命周期莫过于Activity的创建到消亡的过程了.本篇博客就会介绍Activity生命周期中的不同阶段,通过实例的形式来窥探一下Activity的生命周期.搞明白Activity的生命周期是至关重要的,因为只有搞明白每

Android开发之activity的生命周期详解_Android

本文实例讲述了Android activity的生命周期.分享给大家供大家参考,具体如下: activity类处于android.app包中,继承体系如下: 1.Java.lang.Object 2.android.content.Context 3.android.app.ApplicationContext 4.android.app.Activity activity是单独的,用于处理用户操作.几乎所有的activity都要和用户打交道,所以activity类创建了一个窗口,开发人员可以通

Android中Activity生命周期和启动模式详解_Android

Activity生命周期经典图解: 按键对生命周期的影响: BACK键: 当我们按BACK键时,我们这个应用程序将结束,这时候我们将先后调用onPause()->onStop()->onDestory()三个方法. 再次启动App时,会执行onCreate()->onStart()->onResume() HOME键: 当我们打开应用程序时,比如浏览器,我正在浏览NBA新闻,看到一半时,我突然想听歌,这时候我们会选择按HOME键,然后去打开音乐应用程序,而当我们按HOME的时候,A

Android中的Activity生命周期总结_Android

概述 有图有真相,所以先上图: 上图是从Android官网截下的Activity的生命周期流程图,结构非常清晰,它描述了Activity在其生命周期中所有可能发生的情况以及发生的先后顺序,下面就将结合此图详细介绍一下Activity的生命周期. Activity四大基本状态 Activity生命周期一般分为四个基本状态,分别是活动状态(running),暂停状态(paused),停止状态(stopped)和死亡状态. 1.活动状态(running) 活动状态一般是指该Activity正处于屏幕最

Android——Activity的生命周期

   一,Demo测试Activity的生命周期       写两个Activity:   package com.example.activity_04; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.view.Menu; import android.view.View; import android.view.View.OnClickL