【Android开发】基本程序单元Activity-Activity概述

Activity的意思是活动。在Android中,Activity代表手机的一屏,或是平板电脑中的一个窗口。它是Android应用的重要组成单元之一,提供了和用户交互的可视化界面。在一个Activity中,可以添加很多组件,这些组件负责具体的功能。

在Android应用中,可以有很多个Activity,这些Activity组成了Activity栈(Stack),当前活动的Activity位于栈顶,之前的Activity被压入下面,成为非活动Activity,等待是否可能被恢复为活动状态。在Activity的生命周期中,有如下表所示的4个重要状态:

1.活动状态:当前的Activity,位于Activity栈顶,用户可见,并且可以获得焦点。

2.暂停状态:失去焦点的Activity,仍然可见,但是在内存低的情况下,不能被系统killed(杀死)。

3.停止状态:该Activity被其他Activity所覆盖,不可见,但是它仍然保存所有的状态和信息。当内存低的情况下,它将要被系统Killed(杀死)。

4.销毁状态:该Activity结束,或Activity所在的Dalvik进程结束。

下图显示了Activity各种重要状态,以及相关的回调方法。

在上图中,用矩形方块表示的内容为可以被回调的方法,而带底色的椭圆形则表示Activity的重要状态。从该图可以看出,在一个Activity的声明周期中有以下方法会被系统回调:

1.onCreate()方法:在创建Activity时被回调。该方法是最常见的方法,在Eclipse中创建Android项目时,会自动创建一个Activity,在该Activity中,默认重写了onCreat(Bundle saveInstanceState)方法,用于对该Activity执行初始化。

2.onStart()方法:启动Activity时被回调,也就是当一个Activity变为显示时被回调。

3.onRestart()方法:重新启动Activity时被回调,该方法总是在onStart()方法以后执行。

4.onPause()方法:暂停Activity时被回调。该方法需要非常快速的执行,因为直到该方法执行完毕后,下一个Activity才能恢复。在该方法中,通常用于持久保存数据。例如,当我们正在玩游戏时,突然来了一个电话,这是就可以在该方法中将游戏状态持久保存起来。

5.onResume()方法:当Activity由暂停状态恢复为活动状态时调用。调用该方法后,该Activity位于Activity位于Activity栈顶。该方法总是在onPause()方法以后执行。

6.onStop()方法:停止Activity时被回调。

7.onDestory()方法:销毁Activity时被回调。

转载请注明出处:http://blog.csdn.net/acmman/article/details/45126989

时间: 2024-07-30 18:04:15

【Android开发】基本程序单元Activity-Activity概述的相关文章

Android开发系列二之窗口Activity的生命周期_Android

在上篇文章给大家介绍了android开发系列一之用按钮实现显示时间,感兴趣的朋友可以点击阅读详情. 在Activity从创建到销毁的过程中需要在不同的阶段调用7个生命周期的方法这7个生命周期方法定义如下: protected void onCreate(Bundle savedInstanceState) protected void onStart() protected void onResume() protected void onPause() protected void onSto

Android开发系列二之窗口Activity的生命周期

在上篇文章给大家介绍了android开发系列一之用按钮实现显示时间,感兴趣的朋友可以点击阅读详情. 在Activity从创建到销毁的过程中需要在不同的阶段调用7个生命周期的方法这7个生命周期方法定义如下: protected void onCreate(Bundle savedInstanceState) protected void onStart() protected void onResume() protected void onPause() protected void onSto

Android开发中关于获取当前Activity的一些思考_Android

在Android开发过程中,我们有时候需要获取当前的Activity实例,比如弹出Dialog操作,必须要用到这个.关于如何实现由很多种思路,这其中有的简单,有的复杂,这里简单总结一下个人的一些经验吧. 反射 反射是我们经常会想到的方法,思路大概为 获取ActivityThread中所有的ActivityRecord 从ActivityRecord中获取状态不是pause的Activity并返回 一个使用反射来实现的代码大致如下 public static Activity getActivit

Android开发中关于获取当前Activity的一些思考

在Android开发过程中,我们有时候需要获取当前的Activity实例,比如弹出Dialog操作,必须要用到这个.关于如何实现由很多种思路,这其中有的简单,有的复杂,这里简单总结一下个人的一些经验吧. 反射 反射是我们经常会想到的方法,思路大概为 获取ActivityThread中所有的ActivityRecord 从ActivityRecord中获取状态不是pause的Activity并返回 一个使用反射来实现的代码大致如下 public static Activity getActivit

Android开发中的Intent和Activity

周末撸了几次代码, 舍不得扔, 立此为照! mainActivity.java package com.tw.flag.ch08_memo; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import andro

《Android 开发入门与实战(第二版)》——6.5节Task、栈以及加载模式

6.5 Task.栈以及加载模式 Android 开发入门与实战(第二版) 在Android应用程序中,应用程序中的Activity是可以启动其他程序的Activity的,例如,你在A程序中单击了某一串链接地址,应用会自动调用系统的浏览器帮你打开这个链接(如果你的系统中存在多个浏览器,则会打开多个并让你选择其中一个),虽然A程序和浏览器不属于同一个应用,但是你单击"回退"按钮后,依然可以回退到A程序中.像这种无缝的用户体验,主要得益于Android中的Task. 那什么是Task呢?通

android-Android 开发在程序退出时的操作应该放在哪处理

问题描述 Android 开发在程序退出时的操作应该放在哪处理 目前有个android项目,在apk退出时要做一些向网络上报数据,之前我是放在主activity的ondestroy方法里的,后来发现当用户按home键,之后apk被系统kill的时候,是不会调用ondestroy的,这样我的上报处理就不会做了.请问这种处理应该怎么做,别说放在onstop里,我有多个activity,主activity跳转的时候就会onstop了,我是想apk整个退出时做处理,谢谢! 解决方案 没找到可行的方案,系

xml-android开发小程序,入门知识

问题描述 android开发小程序,入门知识 这是一个简单的安卓浏览器,但是安装到手机后无法搜索.代码如下: <?xml version="1.0" encoding="utf-8"?> android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" >

android-Android 开发的程序eclipse没报错,但意外停止

问题描述 Android 开发的程序eclipse没报错,但意外停止 目的是编写一个单点触摸用户输入的例子,以下是程序代码 package com.example.ontouchlistenerdemo; import android.app.Activity; import android.content.Context; import android.content.res.AssetManager; import android.graphics.*; import android.os.

Android开发系列三之窗口的常用事件_Android

相关阅读: Android开发系列二之窗口Activity的生命周期 Android开发系列一用按钮实现显示时间 设置窗口标题事件和在Activity之间跳转. 新建一个项目,新建两个Activity:MainActivity,TitleActivity ,然后再AnroidManifest.xml 中注册TitleActivity AndroidManifest.xml内容如下 <?xml version="1.0" encoding="utf-8"?>