一、Activity简介
Activity是Android四大基本组件(Activity,Service,Broadcast receiver,Content provider)之一。作为基本组件之一其提供的主要功能是:把各种UI组件呈现给用户;另外,因为其实现了
|
android.content.Context接口,所以Activity包含了很多应用程序运行环境的信息,可以把Activity看作是一个Context用于各种UI组件的创建。
下面就来探讨一下Activity是如何工作的。
一般情况下,一个应用程序会包括一个或多个Activity,要想让程序知道并正确调用到每个Activity,需要将它们一一在AndroidManifest.xml这个程序配置文件中记录下来。程序(纯后台程序以外)启动时一般会启动一个Activity,那哪个Activity会成为第一个(也就相当于程序的入口)呢?下面的配置文件回答了这一切:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="cn.eric.helloworld" <!-- 应用程序包名 -->
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".HelloWorld" <!-- Activity名。这个名字取法一定要保证能跟上面的package名一起构成该Activity类的全名 -->
android:label="@string/app_name">
<intent-filter> <!-- 这个intent-filter决定了这个Activity是这个程序的入口,这种组合的intent-filter,一个程序中出能出现在一个Activity中,因为程序不可能同时有多个入口 -->
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".TwoListDemo"/> <!-- 简易声明方式 -->
</application>
</manifest>
程序中使用Activity的方法是:继承Activity类,然后Override其生命周期方法。生命周方法包括:onCreate()、onStart()、onRestart()、onResume()、onPause()、onStop()、onDestroy()。关于这些方法的详细内容参照下一节。
二、Activity的生命周期
Activity的创建和结束(也就是其生命周期)都是由Android系统来管理的,但是为了告知程序员,此Activity正处在其一生中的哪个阶段,所以提供了一系列的回调方法,利用这些回调方法,程序员可以在Activity的不同生命阶段做一些想做的事。
public class ActivityLifecycleDemo extends Activity{
private static final String TAG = "ActivityLifecycleDemo";
/**
* Activity开始创建时调用.在这个方法中可以创建想要呈现的UI组件,
* 一般情况下都是使用layout布局文件,当然也可以自己创建各种View的对象.
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activitylifecycledemo);
Button button = (Button)findViewById(R.id.btn_handler);
button.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(ActivityLifecycleDemo.this,
CopyOfActivityLifecycleDemo.class);
startActivity(intent);
}
});
Log.i(TAG, "onCreate");
}
/**
* 当Activity创建完毕(onCreate调用完毕)后调用;或者是在onRestart调用后调用.
*/
@Override
protected void onStart() {
super.onStart();
Log.i(TAG, "onStart");
}
/**
* onStart调用后调用,该方法调用结束后,Activity处于可用状况,不断监听各种事件的发生,
* 然后作出响应.
*/
@Override
protected void onResume() {
super.onResume();
Log.i(TAG, "onResume");
}
/**
* 当一个Activity从栈中被弹出,重新转入前台时,会调用此方法。
*/
@Override
protected void onRestart() {
super.onRestart();
Log.i(TAG, "onRestart");
}
/**
* 当程序要从本Activity跳转到下一个Activity时,调用此方法.
*/
@Override
protected void onPause() {
super.onPause();
Log.i(TAG, "onPause");
}
/**
* onPause调用后调用.此时Activity从前台转入到后台,但并没有被结束,
* 只是被压入Android系统维护的一个栈中.
*/
@Override
protected void onStop() {
super.onStop();
Log.i(TAG, "onStop");
}
/**
* 当用户按了返回键从本Activity返回时,系统会依次调用onPause、onStop方法,
* 最后会调用onDestroy方法结束该Activity的生命。在这个方法中可以作一些回
* 收资源的清理工作。
*/
@Override
protected void onDestroy() {
super.onDestroy();
Log.i(TAG, "onDestroy");
}
}
以上的示例代码的运行结果如下:
操作顺序:①、②、
①、07:32:32 "ActivityLifecycleDemo" Activity启动
12-08 07:32:32.258: INFO/ActivityLifecycleDemo(10094): onCreate
12-08 07:32:32.258: INFO/ActivityLifecycleDemo(10094): onStart
12-08 07:32:32.278: INFO/ActivityLifecycleDemo(10094): onResume
②、07:32:55 点击了"ActivityLifecycleDemo" Activity中的按钮跳转到"CopyOfActivityLifecycleDemo" Activity
12-08 07:32:55.078: INFO/ActivityLifecycleDemo(10094): onPause
12-08 07:32:55.898: INFO/ActivityLifecycleDemo(10094): onStop
⑤、07:33:15 从"CopyOfActivityLifecycleDemo" Activity返回
12-08 07:33:15.228: INFO/ActivityLifecycleDemo(10094): onRestart
12-08 07:33:15.228: INFO/ActivityLifecycleDemo(10094): onStart
12-08 07:33:15.228: INFO/ActivityLifecycleDemo(10094): onResume
⑥、07:33:26 从"ActivityLifecycleDemo" Activity返回
12-08 07:33:26.398: INFO/ActivityLifecycleDemo(10094): onPause
12-08 07:33:26.988: INFO/ActivityLifecycleDemo(10094): onStop
12-08 07:33:26.988: INFO/ActivityLifecycleDemo(10094): onDestroy
③、07:32:55 当"ActivityLifecycleDemo" Activity中的按钮被点击后程序跳转到"CopyOfActivityLifecycleDemo" Activity
12-08 07:32:55.177: INFO/CopyOfActivityLifecycleDemo(10094): onCreate
12-08 07:32:55.177: INFO/CopyOfActivityLifecycleDemo(10094): onStart
12-08 07:32:55.187: INFO/CopyOfActivityLifecycleDemo(10094): onResume
④、07:33:15 返回到"ActivityLifecycleDemo" Activity
12-08 07:33:15.169: INFO/CopyOfActivityLifecycleDemo(10094): onPause
12-08 07:33:15.888: INFO/CopyOfActivityLifecycleDemo(10094): onStop
12-08 07:33:15.888: INFO/CopyOfActivityLifecycleDemo(10094): onDestroy
分享到:
相关推荐
102.Android面试之---讲一下你对Activity的了解(面试必问的).1
Android自学笔记-15-Activity的生命周期
2、启动activity-显示启动和隐式启动: 3、隐式启动自己的activity 4、获取隐启动传递过来的data数据 5、显示启动传递数据 6、禁用掉横竖屏切换 7、开启activity获取返回值-startActivityForResult:
日志追踪(完成以下六步、明白android的四种状态的生命周期和相互切换): 1、启动app、查看控制台输出,发现依次触发onCreate、onStart、onResume这三个方法 2、点击按钮(弹窗风格的Activity),控制台输出onPause...
android执行字符串代码--实现接口可配置跳转任何Activity
当听到这个题目的时候,我得意地笑了笑,对于Activity的生命周期已经记熟的我,心想,为什么不直接问Activity的生命周期呢?于是想当然的说出了如下的答案: 在A跳转B会执行:A onPause -> A onStop -> B onCreate...
描述 Android Activity生命周期之间的关系
Android学习笔记-Activity篇 Contents Android学习笔记-Activity篇 1 一、activity创建: 1 二、在manifest.xml中声明activity: 1 三、启动activity 1 3.1 启动不带返回结果的Activity 1 3.2 启动带有返回结果的...
Android 生命周期管理:重置一个 Activity Android 生命周期管理是 Android 应用程序开发中一个非常重要的概念,涉及到 Activity 的生命周期管理,包括 Activity 的创建、启动、停止、销毁等过程。在 Android 中,...
有助于深入了解Android Activity生命周期的测试代码,可以结合博客http://blog.csdn.net/freetangxiaoying/article/details/17167819领悟。
Android屏幕旋转时Activity的生命周期
Android-activity生命周期简单介绍,打好基础
Android Activity生命周期演示源码,从第一个Activity到第二个Activity,Android Activity形象的说就是一个容器,在里面放置各种控件(按钮,文本,复选框等),就形成了软件的界面~ Activity是可见的。
Android 中从activity1跳转到activity2再回到activity所经历的生命周期
devDiv 移动开发丛书之android 第二章 activity 生命周期
Android_Activity_生命周期例子.主要通过几个activity 相互调用 解释生命周期,应该对大家了解android activity 的生命周期有所帮助
Android Activity 生命周期
android组件Activity 的生命周期
android 启动 activity生命周期
对于应用开发者来说,理解不同的应用组件(特别是Activity、Service、Intent Receiver)对应用进程的生命周期的影响,这是非常重要的。如果没有正确地使用这些组件,将会导致当应用正在处理重要的工作时,进程却被...