在Android中,无论是开发者还是用户,接触最多的就算是Activity。它是Android中最复杂、最核心的组件。Activity组件是负责与用户进行交互的组件,它的设计理念在很多方面都和Web页面类似。当然,这种相似性主要体现在设计思想上。在具体实现方面,Android的Activity组件有自己的设计规范,同时,它能够更简便地使用线程、文件数据等本地资源。

一、Activity 的生命周期

Activity 的生命周期是被以下的函数控制的。

 public class Activity extends ApplicationContext {
protected void onCreate(Bundle icicle);
protected void onStart();
protected void onRestart();
protected void onResume();
protected void onFreeze(Bundle outIcicle);
protected void onPause();
protected void onStop();
protected void onDestroy();
}
  1. onCreate函数:函数是你进行初始化的地方,这个也是执行setContentView(View)函数的地方,setContentView(View)函数可以传入一个由XML编制的UI界面,可以使UI和具体实现完全分离。
  2. onStart函数:该方法在 onCreate() 方法之后被调用。
  3. onRestart()函数:在 Activity 从 Stop 状态转换为 Active 状态时被调用。
  4. onResume()函数:在 Activity 从 Pause 状态转换到 Active 状态时被调用。
  5. onFreeze()函数:当你的activity被暂停而其他的activity恢复与用户交互的时候这个方法会被调用(在其他activity显示之前)
  6. onPause()函数:当系统要启动一个其他的activity时调用(其他的activity显示之前)
  7. onStop()函数:当另外一个activity恢复并遮盖住此activity,导致其对用户不再可见时调用。
  8. onDestroy()函数:在你的activity被销毁前所调用的最后一个方法。

二、Activity 的配置

  1. 注册Activity,除了系统自动生成的Activity之外,其他的Activity都必须在manifest.xml文件中进行注册

    <activity android:name=".Demo" android:label="@string/app_name"> //.Demo是要注册的Activity名字,当然不在默认包内的话,前面要加上包名。后面的是Activity的名字
    </activity>
  2. 启动另一个Activity
    Intent intent =new Intent(CurrentActivity.this,OtherActivity.class);
    startActivity(intent);

    当然OtherActivity也必须在manifest.xml文件中进行注册。其中intent是一个通信机制,这个以后会专门介绍它。

三、一些关于 Activity 的技巧

  1. 锁定Activity屏幕的运行方向

    <activity android:name=".EX01"
    android:label="@string/app_name"
    android:screenOrientation="portrait">// 竖屏 , 值为 landscape 时为横屏
    </activity>
  2. 全屏的Activity
    // 设置全屏模式
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
    WindowManager.LayoutParams.FLAG_FULLSCREEN);
    // 去除标题栏
    requestWindowFeature(Window.FEATURE_NO_TITLE);
  3. 在Activity的title中加入进度条
    // 不明确进度条
    requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
    setContentView(R.layout.main);
    setProgressBarIndeterminateVisibility(true); // 明确进度条
    requestWindowFeature(Window.FEATURE_PROGRESS);
    setContentView(R.layout.main);
    setProgress(5000);
Activity还有更多可以详细讲解的地方,比如它的交互事件,构造菜单、对话框等附加的交互资源以及它的数据结构等等。这些在以后的学习中我们肯定会遇到。所以今天在这里就不再赘述了,只是让大家了解一下它的简单机制。
 
参考文章:(1)android之Activity生命周期   http://www.cnblogs.com/draem0507/archive/2012/11/28/2793332.html
              (2)详解 Android 的 Activity 组件 http://www.ibm.com/developerworks/cn/opensource/os-cn-android-actvt/
 
========================================
作者:cpacm
出处:(http://www.cpacm.net/2015/03/22/Android开发日记(二)——Android四大组件之Activity/

【Android开发日记】之入门篇(四)——Android四大组件之Activity的更多相关文章

  1. 【Android开发日记】第一个任务Android Service!Service靴+重力感应器+弹出窗口+保持执行

    前言: 近期在写一个小程序,需求是手机摇一摇就弹窗出来.第一次使用了Service,学习了两天,实现了Service弹窗,开机启动,Service启动和销毁,Service保持一直执行. 满足了自己的 ...

  2. Android开发中遇到的问题(四)——Android中WARNING: Application does not specify an API level requirement!的解决方法

    今天在手机上调试运行Andorid项目时,发现Console打印出"WARNING: Application does not specify an API level requiremen ...

  3. 【Android开发日记】之入门篇(十四)——Button控件+自定义Button控件

        好久不见,又是一个新的学期开始了,为什么我感觉好惆怅啊!这一周也发生了不少事情,节假日放了三天的假(好久没有这么悠闲过了),实习公司那边被组长半强制性的要求去解决一个后台登陆的问题,结果就是把 ...

  4. 【Android开发日记】之入门篇(十二)——Android组件间的数据传输

    组件我们有了,那么我们缺少一个组件之间传递信息的渠道.利用Intent做载体,这是一个王道的做法.还有呢,可以利用文件系统来做数据共享.也可以使用Application设置全局数据,利用组件来进行控制 ...

  5. 【Android开发日记】之入门篇(九)——Android四大组件之ContentProvider

    数据源组件ContentProvider与其他组件不同,数据源组件并不包括特定的功能逻辑.它只是负责为应用提供数据访问的接口.Android内置的许多数据都是使用ContentProvider形式,供 ...

  6. 【Android开发日记】之入门篇(十一)——Android的Intent机制

    继续我们的Android之路吧.今天我要介绍的是Android的Intent. 对于基于组件的应用开发而言,不仅需要构造和寻找符合需求的组件,更重要的是要将组件有机的连接起来,互联互通交换信息,才能够 ...

  7. 【Android开发日记】之入门篇(七)——Android数据存储(上)

    在讲解Android的数据源组件——ContentProvider之前我觉得很有必要先弄清楚Android的数据结构. 数据和程序是应用构成的两个核心要素,数据存储永远是应用开发中最重要的主题之一,也 ...

  8. 【Android开发日记】之入门篇(八)——Android数据存储(下)

    废话不多说了,紧接着来讲数据库的操作吧.Come On! 提到数据存储问题,数据库是不得不提的.数据库是用来存储关系型数据的不二利器.Android为开发者提供了强大的数据库支持,可以用来轻松地构造基 ...

  9. 【Android开发日记】之入门篇(五)——Android四大组件之Service

    这几天忙着驾校考试,连电脑都碰不到了,今天总算告一段落了~~Service作为Android的服务组件,默默地在后台为整个程序服务,辅助应用与系统中的其他组件或系统服务进行沟通.它跟Activity的 ...

随机推荐

  1. Ubantu修改主机名详细步骤

    使用vmWare创建的Ubantu虚拟主机,默认的主机名均为Ubantu,通过修改主机名的使得分布式集群操作变得方便.具体步骤如下: 1.查看虚拟机的主机名:打开终端,使用 hostname 命令,回 ...

  2. Virtual Host on Apache(Apache上建立虚拟主机)

    0. Introduction Usually, we want to build two or more websites on a web server, but we have only one ...

  3. AV Foundation 实现文字转语音

    AV Foundation 主要框架 CoreAudio 音频处理框架 扩展学习:<Learning CoreAudio> CoreVideo 视频处理的管道模式,逐帧访问 CoreMed ...

  4. MySQL统计数据库表大小

    use information_schema; SELECT TABLE_NAME, (DATA_LENGTH/1024/1024) as DataM , (INDEX_LENGTH/1024/102 ...

  5. Linux 远程主机安全配置

    开启了新的 Linux 服务器后,首要任务是做安全配置. 首先更新: # ubuntu sudo apt-get update # 获取 apt 源的软件列表 sudo apt-get upgrade ...

  6. BZOJ 2049 SDOI2008 洞穴勘测 LCT板子

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2049 题意概述:给出N个点,一开始不连通,M次操作,删边加边,保证图是一个森林,询问两点连 ...

  7. Week2 Teamework from Z.XML - 必应缤纷桌面助手 - 软件分析与用户需求调查

    软件分析与用户需求调查(2013) from Z.XML 本次团队作业要求: 通过定性, 定量地分析, 总结和评定某软件是否满足了目标用户的需求,并把分析的过程和结果用博客表达出来. 选题:必应缤纷桌 ...

  8. UnrealEngine4入门(二) 实现一个可用按键控制的球体

    源码摘自官网guide,加上部分自己的理解和注释 接上篇博客 本文实现一个可用WASD控制滚动的球体 先创建一个可见的球体: 在CollidingPawn.cpp的构造函数ACollidingPawn ...

  9. [比赛总结]ACM div3 G 比赛总结

    这次题目总体感觉和做阅读理解差不多,英文题目读起来相当费劲. 另外,这次比赛整个队伍中我们三个都突出存在的问题就是,把简单问题复杂化,抓不到事物的本质,因此很容易的就被题目误导. 比如C题,明明想到了 ...

  10. Python-爬取"我去图书馆"座位编码

    原文地址:http://fanjiajia.cn/2018/11/22/Python-%E7%88%AC%E5%8F%96%E2%80%9D%E6%88%91%E5%8E%BB%E5%9B%BE%E4 ...