Activity简述

Activity是Android应用中负责与用户交互的组件。在应用中创建自己的Activity需要继承Activity或者继承Activity的

子类。

public class TestActivity extends Activity {
}

Activity的使用

从图1.1可以看出Activity间接继承了ContextThemeWrapper、ContextWrapper、Context、Object这些基类,因此

Activity可以直接调用它们的方法。当然只是继承Activity是没有任何意义的,我们还需要实现Activity的一个或多个方

法。

图1.1

在平时开发中最常用到的是onCreate(Bundle savedInstanceState)方法,此方法在Activity创建时被回调,我们可

以通过setContentView方法的加载需要显示的视图。在Activity中提供了三个setContentView方法,见图1.2

图1.2

(1)public void setContentView(int layoutResID):从资源文件中加载布局ID

(2)public void setContentView(View view):加载一个视图到Activity中。

(3)public void setContentView(View view, ViewGroup.LayoutParams params):加载一个指定的视图到Activity

中,并通过params设置布局参数。

创建完我们需要的Activity后,还需要在AndroidMainfest.xml中进行配置。

<activity android:name="com.example.TestActivity">

当自己的Activity创建完毕后,我们需要启动或者进行销毁,Activity的启动可以使用以下两个方法:

(1)publicvoid startActivity(Intent intent):启动Activity。

(2)publicvoid startActivityForResult(Intent intent,intrequestCode):以指定的请求码requestCode启动Activity,

当启动的Activity返回时,可以通过onActivityResult(intrequestCode,int resultCode, Intent data)方法获取结果。

销毁Activity可以使用以下方法:

(1)publicvoid finish():结束当前Activity。

(2)publicvoid finishActivity(intrequestCode):结束以startActivityForResult(Intentintent,int requestCode)方法启

动的Activity。

Activity之间的数据传递

当我们从一个Activity启动另一个Activity时,需要将一些数据传递过去,这时我们就需要使用Intent,可以使用

Intent提供的多个重载的putExtra方法来进行传递,见图1.3

图1.3

从图1.3可以看出,通过Intent可以传递的数据类型多种多样,相应的可以通过图1.4中的方法调用Intent的get方法,获

取相应的数据。

图1.4

Activity的生命周期

从Activity创建到销毁,Activity的状态大致可以分为以下四类:

(1)     活动状态:当前的Activity位于前台,用户可见,可以获得焦点。

(2)     暂停状态:其他Activity位于前台,该Activity依然可见,只是不能获得焦点。

(3)     停止状态:该Activity不可见,失去焦点。

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

Activity的生命周期请参看图1.5所示:

图1.5

public class Activity extends ApplicationContext {protected void onCreate(Bundle savedInstanceState);protected void onStart();protected void onRestart();protected void onResume();protected void onPause();protected void onStop();protected void onDestroy();}

onCreate(BundlesavedInstanceState):创建Activity时被回调。该方法只会被调用一次。

onStart():启动Activity时被回调。

onRestart():重新启动Activity时被回调。

onResume():恢复Activity时被回调,onStart()方法后一定会回调onResume()方法。

onPause():暂停Activity时被回调。

onStop():停止Activity时被回调。

onDestroy():销毁Activity时被回调。该方法只会被调用一次。

从图1.5可以得出,一个Activity正常启动的过程中,他们被调用的顺序是 onCreate -> onStart-> onResume。

在Activity被干掉的时候顺序是onPause-> onStop -> onDestroy ,这样就是一个完整的生命周期。

如果中止的时候新出的一个Activity是全屏时的调用顺序是onPause->onStop,恢复的时候onStart->onResume。

如果打断 这个应用程序的是一个Theme为Translucent 或者Dialog 的Activity那么只是onPause ,恢复 的时候

onResume 。

图1.6

从图1.6可以看出, onPause,onstop, onDestroy,三种状态 下 activity都有可能被系统干掉,为了保证程序的正

确性,你要在onPause()里写上持久层操作的代码,将用户编辑的内容都保存到存储介质上(一般都是数据库 )。看看

官网给出的例子:

public class CalendarActivity extends Activity {...static final int DAY_VIEW_MODE = 0;static final int WEEK_VIEW_MODE = 1;private SharedPreferences mPrefs;private int mCurViewMode;protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);SharedPreferences mPrefs = getSharedPreferences();mCurViewMode = mPrefs.getInt("view_mode", DAY_VIEW_MODE);}protected void onPause() {super.onPause();SharedPreferences.Editor ed = mPrefs.edit();ed.putInt("view_mode", mCurViewMode);ed.commit();}}

在onPause()中使用SharedPreferences.Editor进行写入,在onCreate(Bundle savedInstanceState)中进行读取。

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

转载请注明出处:http://blog.csdn.net/hai_qing_xu_kong/article/details/47315083情绪控

Android之四大组件(Activity)相关推荐

  1. Android基础——四大组件之Activity

    这几天继续回顾了一些Android基础方面的知识,今天跟大家一起回顾下Android四大组件中的Activity.虽然很基础,但工欲善其事,必先利其器.我们只有打好夯实的基础,才能在技术开发这条道路上 ...

  2. android的四大组件及使用场景,Android/四大组件/Activity.md · BoraxZYF/AndroidInterview - Gitee.com...

    ## 四大组件 ## Activity ### Activity 的四种启动模式及使用场景 - standard 标准模式,Activity 的默认启动模式.每次启动一个 Activity 时都会创建 ...

  3. Android深入四大组件(五)Android8.0 根Activity启动过程(后篇)

    前言 在几个月前我写了Android深入四大组件(一)应用程序启动过程(前篇)和Android深入四大组件(一)应用程序启动过程(后篇)这两篇文章,它们都是基于Android 7.0,当我开始阅读An ...

  4. Android实训课程之三 这次课老师先是提到了Android有四大组件:Activity、Service、Broadcast Receiver、Content Provider。然后重点提到Acti

    Android实训课程之三 这次课老师先是提到了Android有四大组件:Activity.Service.BroadcastReceiver.ContentProvider.然后重点提到Activi ...

  5. Android深入四大组件(六)Android8.0 根Activity启动过程(前篇)

    相关文章 Android深入四大组件系列 Android系统启动系列 Android应用程序进程系列 Android深入解析AMS系列 前言 在几个月前我写了Android深入四大组件(一)应用程序启 ...

  6. Android深入四大组件(七)Android8.0 根Activity启动过程(后篇)

    相关文章 Android深入四大组件系列 Android系统启动系列 Android应用程序进程系列 Android深入解析AMS系列 前言 在几个月前我写了Android深入四大组件(一)应用程序启 ...

  7. Android 四大组件 -- Activity

    Android开发的四大组件分别是: 活动(activity),用于表现功能; 服务(service),后台运行服务,不提供界面呈现: 广播接受者(BroadcastReceive),勇于接收广播: ...

  8. Android深入四大组件(八)广播的注册、发送和接收过程

    前言 我们接着来学习Android四大组件中的BroadcastReceiver,广播主要就是分为注册.接收和发送过程.建议阅读此文前请先阅读Android深入理解四大组件系列的文章,知识重复的部分, ...

  9. Android的四大组件

    Android的四大组件:Activity.Service.BroadcastReceiver.Content Provider. Content Provider 属于Android应用程序的组件之 ...

最新文章

  1. Maya和Arnold的高级照明实践
  2. SSH协议、HTTPS中SSL协议的完整交互过程
  3. 串联NSOperation知识点
  4. 【转】web 前端研发工程师编程能力飞升之路
  5. 时间:2014年3月27日文件和目录操作函数
  6. 《跟我一起写Makefile》读书笔记(2)
  7. 百度网盘爬虫(如何爬取百度网盘)
  8. 你做不到对企业真正有价值,下一个裁员就是你
  9. 集成Slice2Java插件
  10. 中国移动企业文化考试试题含答案
  11. p6s与onvif_大华的录像机添加海康摄像头,使用了onvif协议,为啥也添加不进去?...
  12. 【数字电路】组合逻辑电路
  13. java 加载dll文件
  14. 京津冀辽迎入汛以来最强降雨,四川盆地西部形成暴雨结界
  15. ERROR 126 HY000 Incorrect key file for table '/tmp/ sql 1
  16. 可批量查询企业工商数据信息的API
  17. Django 字段选项之 related_name 和 related_query_name
  18. WebBrowser 显示Html内容3点细节技巧
  19. 计算机课程可信计算,可信计算-表7.计算机学院(系、所)研究生课程简介.doc...
  20. background-size设置背景图片自适应 在ie8下失效的问题

热门文章

  1. spring mvc mysql配置_spring mvc配置数据库连接
  2. labview波形图两个游标,LabVIEW数据可视化:使用波形图表控件逐点显示曲线的方法...
  3. 大脚导入配置选择哪个文件_IntelliJ IDEA 最常用配置(收藏篇)
  4. QT 建立信号和槽的联系(事件处理)
  5. 开发经理 VS 敏捷专家
  6. #define list_entry(ptr, type, member) \   container_of(ptr, type, member)
  7. 【20160924】GOCVHelper MFC增强算法(1)
  8. BASH SHELL 脚本基础
  9. WCF错误:413 Request Entity Too Large
  10. 手动安装oracle软件 删软件