`
yangshen998
  • 浏览: 1302235 次
文章分类
社区版块
存档分类
最新评论

Activity的生命周期

 
阅读更多

Activity

注:生命周期的状态切换只存在于activity内部对象之间。

1、 是应用程序的入口

2、 负责创建窗口,用户交互等

3、 一个程序可能有多个activity

使用方法:继承自android.app.Activity

Override onCreate()

setContentView()显示视图

findViewByld()实例化组件

androidManifest.xml—>application标签里声明

指定程序运行时首先家在的Activity,定义action和category

Activity的生命周期

Activity有三种状态,分别为:

运行状态:当activity在屏幕的最前端(位于当前堆栈的顶部)它是可见的有焦点的,可以用力进行用户的操作(点击,双击,长按等),那么就叫做激活或者运行状态。值得注意的是,当activity处于运行状态的时候,android会尽可能的保持它的运行,即使出现内存不足等情况,android也会先杀死堆栈底部的activity,来确保运行状态的activity正常运行。

暂停状态:在某种情况下,activity对用户来说,仍然是可见的,但不再拥有焦点,即用户对它的操作是没有实际意义的。在这个时候它就属于暂停状态。例如:当最前端的activity是个透明或者美欧全屏,那么下层仍然可见的activity就是暂停状态。暂停的activity仍然是激活的(它保留所有的状态和成员信息并保持与activity管理器连接),但当内存不足时,可能会被杀死。

注:不是所有的activity失去焦点就会进入暂停状态。

停止状态:当activity完全不可见时,它就处于停止状态。它仍然保留着当前状态和成员信息。然而这些对用户来说,都是不可见的;同暂停状态一样,当系统其他地方需要内存时,它也有被杀死的可能。

生命周期事件:activity状态的变化是人为操作的,而这些状态的改变,也会触发一些事件。我们且叫他的生命周期事件一共有七个。如图:

Void onCreate(Bundle savedInstanceState)

void onStart()

void onRestart()

void onResume()

void onPause()

void onStop()

void onDestroy()

当打开一个activity,如果该activity实例不存在于activity管理器中,就会触发onCreate事件。Activity的实例不是我们自己创建的。是android系统自己创建的。接下来是onStart事件,然后是onResume事件,此时activity就处于了运行状态。

接下来看看在各种情况下的状态转换:

第一:

1、运行activity之后的状态转换:

package cn.lyhz;

import android.app.Activity;

import android.os.Bundle;

import android.util.Log;

public class TestActivity extends Activity {

private static final String TAG = "myTest";

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

Log.i(TAG,"onCreate");

}

protected void onDestroy() {

//Log.i(TAG,"onDestroy");

super.onDestroy();

}

protected void onPause() {

Log.i(TAG,"onPasume");

super.onPause();

}

protected void onRestart() {

Log.i(TAG,"onRestart");

super.onRestart();

}

protected void onResume() {

Log.i(TAG,"onResume");

super.onResume();

}

protected void onStart() {

Log.i(TAG,"onstrat");

super.onStart();

}

protected void onStop() {

Log.i(TAG,"onStop");

super.onStop();

}

}

2、点击红色圈住得那个按钮(返回键),会发生的状态是

onPasume—onStop—onDestroy

一般不会发生onDestroy事件,除非是有意的把一个activity关闭,Destroy之后是无法再返回的。

点击小房子后,运行的状态为onPesume—onStop,这是压栈的过程

返回之后再长按home键(小房子)重新回到activity,它的运行状态是onRestart—onStart—onResume,也就是出栈的过程。

第二:

写两个activity互相切换

package cn.lyhz;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

public class SecondActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

setContentView(R.layout.seconde);

Button backB = (Button)findViewById(R.id.backB);

backB.setOnClickListener(new OnClickListener() {

public void onClick(View v) {

Intent intent = new Intent(SecondActivity.this,FirstActivity.class);

startActivity(intent);

}

});

}

}

点击按钮,运行组状态是onPasume—onStop会切换到另一个界面。

点击返回按钮,它的运行状态是onCreate—onStart—onResume,点击手机自带的返回按钮的运行状态是

onRstart—onStart—onResume(这是出栈的过程)

第三:(半透明定的效果,创建了一个对话框样式activity)

点击this is maDialog按钮就会出现这个结果,这是的状态为onPesume暂停状态,这是把它放到了栈里面。再点击手机自带的返回按钮,他回出栈,状态为onResume

2、package cn.lyhz;

import android.app.Activity;

import android.app.AlertDialog;

import android.app.AlertDialog.Builder;

import android.content.DialogInterface;

import android.content.Intent;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

public class FirstActivity extends Activity {

private static final String TAG = "myTest";

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

Log.i(TAG,"onCreate");

Button goB = (Button)findViewById(R.id.goB);

goB.setOnClickListener(new OnClickListener() {

public void onClick(View v) {

Intent intent = new Intent(FirstActivity.this,SecondActivity.class);

startActivity(intent);

}

});

Button showMyDialog = (Button)findViewById(R.id.showMyDialog);

showMyDialog.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {

Intent intent = new Intent(FirstActivity.this,DialogActivity.class);

startActivity(intent);

}

});

Button showAlertDialogB = (Button)findViewById(R.id.showAlertDialog);

showAlertDialogB.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {

showAlertDialog();

Log.i(TAG,"showAlertDialog");

}

});

}

public void showAlertDialog(){

AlertDialog.Builder builder = new Builder(FirstActivity.this);

builder.setMessage("确认退出么?");

builder.setTitle("提示");

builder.setPositiveButton("确定",

new android.content.DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int which) {

dialog.dismiss();

FirstActivity.this.finish();

}

});

builder.setNegativeButton("

取消", new android.content.DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int which) {

dialog.dismiss();

}

});

builder.create().show();

}

protected void onDestroy() {

Log.i(TAG,"onDestroy");

super.onDestroy();

}

protected void onPause() {

Log.i(TAG,"onPasume");

super.onPause();

}

protected void onRestart() {

Log.i(TAG,"onRestart");

super.onRestart();

}

protected void onResume() {

Log.i(TAG,"onResume");

super.onResume();

}

protected void onStart() {

Log.i(TAG,"onstrat");

super.onStart();

}

protected void onStop() {

Log.i(TAG,"onStop");

super.onStop();

}

}

创建的真正的对话框点击取消是没有任何反应的(不能触发FirstActivity的状态),而点击确定状态是onPesume—onStop—onDestroy

分享到:
评论

相关推荐

    Activity生命周期与启动模式

    **Activity生命周期** Activity的生命周期包括了从创建到销毁的各个阶段,主要有以下7个关键状态: 1. **创建(Created)**:当Activity首次被创建时,会调用`onCreate()`方法。在这里,通常进行初始化工作,如...

    2020-实验1-Activity生命周期验证(已完成)1

    Activity生命周期的理解和管理对于编写高效、响应式的Android应用至关重要。本实验旨在深入探索Activity的生命周期,并通过实践来理解各个阶段的工作流程以及它们之间的转换。 首先,我们来看一下Activity的生命...

    activity生命周期

    这是Activity生命周期的第一个回调,通常在这里进行初始化工作,如设置布局、数据绑定等。 2. **启动(Started)**:`onStart()`方法标志着Activity可见但可能不完全在前台。用户可以看到Activity,但不能与其交互...

    Activity生命周期示例

    在Android应用开发中,Activity是用户界面的基本单元,它负责展示...在提供的`Activity_04`文件中,可能包含了演示这些生命周期方法变化的代码示例,通过学习和分析这些示例,开发者可以加深对Activity生命周期的理解。

    Activity生命周期

    当Activity不再需要时,系统会调用`onDestroy()`,这是Activity生命周期的最后阶段。通常在用户关闭Activity、系统回收资源或应用程序退出时发生。在这个方法里,可以进行清理工作,如关闭数据库连接、取消定时任务...

    测试Activity生命周期

    "测试Activity生命周期"的DEMO旨在帮助开发者直观地了解和调试Activity在不同场景下的状态变化。在这个DEMO中,我们可以通过观察日志输出或使用Android Studio的调试工具来跟踪Activity的状态。 Activity的生命周期...

    Activity生命周期总结

    ### Activity 生命周期总结 在 Android 开发中,理解 Activity 的生命周期是非常重要的,因为它直接影响到应用程序的行为、性能以及用户体验。本文将详细介绍 Activity 生命周期中的各个方法及其触发条件,并通过...

    Android activity生命周期示例

    本示例项目“Android activity生命周期示例”旨在帮助开发者深入理解Activity的生命周期及其各个阶段,这对于优化用户体验和资源管理至关重要。 Activity的生命周期包括以下几个主要状态: 1. **创建(Created)**...

    Activity生命周期分析

    这是Activity生命周期中的活跃状态。 - `onPause()`:当Activity即将被另一个Activity覆盖,但仍然部分可见时,系统调用`onPause()`。在此方法中,你应该保存临时数据,但不应执行耗时操作,因为它会影响新Activity...

    Activity生命周期demo

    谷歌官方提供的Activity生命周期示例("Activity lifecycle demo")是一个实用的教学工具,帮助开发者直观地理解Activity在不同情况下的状态变化。 这个demo最初是基于Eclipse开发的,但已经转化为更适合现代开发...

    activity生命周期函数

    7. onDestroy():Activity即将被销毁时调用,这是Activity生命周期的最后阶段。在此阶段,可以做彻底的清理工作,例如关闭数据库连接、取消定时任务等。 二、Activity与Fragment的生命周期 Fragment是Android 3.0...

    android activity 生命周期详细介绍

    ### 一、Android Activity生命周期介绍 #### 1. onCreate() 当Activity首次创建时被调用,这是初始化Activity的最佳时机。在该方法中通常会执行一些初始化操作,比如设置布局文件、初始化UI组件等。 示例: ``` @...

    android Activity生命周期详解(图文)

    总之,深入理解Activity生命周期和其背后的源码逻辑,对于编写高效、响应迅速且用户体验优秀的Android应用至关重要。开发者应熟练掌握这些知识点,以便在设计和调试应用时能得心应手。通过实践和分析ActivityDemo,...

    Activity生命周期图

    很好的一张Activity生命周期图,可以很清楚了解Activity生命周期的流程图

    Activity生命周期Demo

    在这个"Activity生命周期Demo"中,我们将深入探讨Activity如何启动、运行、暂停、停止以及销毁的过程,以及在这些状态转换中如何适当地处理程序逻辑。 1. **Activity生命周期的基本阶段** - **创建(Created)**: ...

    深入理解Activity生命周期

    这是Activity生命周期的第一个回调,通常在这里进行初始化工作,如设置布局、绑定数据等。 2. **可见(Visible)**:Activity从不可见变为可见,但可能还在启动过程中,此时调用`onStart()`。在这个阶段,Activity...

    测试Android Activity生命周期Demo

    本示例“测试Android Activity生命周期Demo”旨在通过实际代码帮助开发者理解并掌握Activity的生命周期,这对于创建稳定、高效的Android应用至关重要。 Activity的生命周期包括了多个关键状态,如初始化、启动、...

    设备旋转与Activity生命周期

    标题“设备旋转与Activity生命周期”所指的知识点主要是Android中Activity如何响应设备的屏幕方向变化。Activity是Android应用程序的基本组件,它负责与用户进行交互。在设备旋转时,系统会触发Activity的生命周期...

    Activity生命周期演示

    日志追踪(完成以下六步、明白android的四种状态的生命周期和相互切换): 1、启动app、查看控制台输出,发现依次触发onCreate、onStart、onResume这三个方法 2、点击按钮(弹窗风格的Activity),控制台输出onPause...

    Android学习3——Activity生命周期

    在“Android学习3——Activity生命周期”这个主题中,我们将深入探讨Activity如何启动、运行、暂停、停止以及销毁,并了解每个状态之间的转换。 Activity生命周期主要包括以下几个关键状态: 1. **初始状态...

Global site tag (gtag.js) - Google Analytics