Activity 详解

Activity主要提供一个界面窗口来给用户提供特定的功能,例如打电话,照相,发送短信,看地图。每一个Activity被提供一个窗口来画整个用户界面。一般,这个窗口填充整个屏幕,但也可能比屏幕小并且悬浮在其它窗口上。

    一个应用程序通常包括多个松耦合的Activity。通常,有一个Activity被标示为一个主Activity,当程序第一次加载时,显示给用户。每一个Activity可以启动其它的Activity来实现其它功能。每当一个Activity启动,前一个Activity就停止下来,但系统把这些Activity保存在一个栈(返回栈)中。每当一个新的Activity启动时,它就被压到这个栈中,并且得到用户焦点。这个栈根据基本的先入后出的原则管理这些Activity。所以,当用户处理完当前Activity中的事务并按下了返回键时,这个Activity就被从栈中反弹出来(并且被销毁),前一个Activity就被重新恢复。

    当一个Activity由于另一个Activity启动而被停止时,通过Activity本身的生命周期回调函数可以告知它自己这个状态改变事件。一个Activity可以收到几种这样的和它的状态更改有关的生命周期回调函数。例如系统是否正创建它,停止它,重新恢复它,或者销毁它。每一个生命周期回调函数都提供一种机制,来使你根据Activity的状态改变做适当的事情。例如,当一个Activity停止时,你的Activity应该释放像网络连接或数据库连接这样的大的对象。当一个Activity重新恢复时,你可以请求必要的资源并恢复到打断前的状态。这些Activity的状态转变组成了整个Activity的生命周期。

    接下来讨论一些关于怎样创建和使用一个Activity的基础知识,包括关于Activity生命周期怎样发生作用的完整详细的讨论,这样你就能正确地管理Activity在多种状态之间的转变。

1. 创建一个Activity

    为了创建一个Activity,你必须创建一个Activity类的直接或间接的子类。在你创建的这个子类中,你必须实现一些生命周期回调函数,当Activity在这些生命状态之间转换时,系统会调用这些回调函数。例如,当一个Activity被创建时,停止时,重新恢复时,或被销毁时。最重要的两个生命周期回调函数是:

    A.onCreate()

        你必须实现这个生命周期回调函数。系统在创建这个Activity时调用它。在你的实现方法中,你应该初始化对你的Activity来说必需的组件。最重要的是,在这个回调函数中,你必须调用setContentView()来定义这个Activity的关于用户界面的基本布局。

    B.onPause()

        系统调用这个方法作为用户离开ctivity的第一个指示,虽然这并不总是意味着这个Activity将要被销毁。在这个方法里,你应该将那些应该保存下来的更改持久化,因为用户可能不不会再返回到这个Activity。

        还有别的生命周期回调函数。如果你想给用户提供流畅的用户体验和处理那些可能引起你Acitivity被停止甚至被销毁的突然的中断,你就应该好好利用这些生命周期函数。所有的生命周期函数将在下面的 管理Activity 章节讨论。

 

2. 实现一个用户界面

   Activity的用户界面由一个具有层次结构的Views组成。每一个View控制一个特定的能和用户交互的矩形区域。例如,一个View可能是一个按钮,当用户触摸它时,触发一个动作。

    Android提供了一些已实现好的View,利用这些View,你可以设计和组织你的用户界面的布局。Widgets是一些可视化、可交互的View,像按钮、文本框、多选框、或者仅仅是一个图片。Layouts是一些特殊的View,继承自ViewGroup,它们的功能是为子View提供一个独一无二的布局模型,例如linearlayout线性布局,grid layout, relative layout。你也可以继承View和ViewGroup(或者它们的子类),来创造你自己的Widgets和layouts,并且你可以把它们用到你的Activity中。

    经常使用资源中的XML格式的布局文件来定义用户界面布局。通过这个方法,你可以把用户界面布局和Activity的逻辑处理代码分开。通过传递一个layout的资源ID给setContentView(),你可以把一个layout设置为Activity的用户界面。当然,你也可以用代码直接新建一个具有层次结构的Views(实现方法为把View插入到ViewGroup中),然后把根ViewGroup传递给setContentView()实现用户界面布局。

    想要了解更多关于用户界面的信息,你可以参考 用户界面 那章。

3. 在manifest(清单)文件中声明Activity

    你必须在manifest文件中声明你的Activity,以便系统能取得它们。通过在manifest文件中的<application>中添加<activity>元素,你可以声明你的Activity。例如:

<manifest ... >

  <application ... >

      <activity android:name=".ExampleActivity" />

      ...

  </application ... >

  ...

</manifest >

Activity还有别的属性你可以定义在这个元素中,像Activity的标签,图标,或者是一个关于这个Activity的风格主题。你可以查询<activity>,来得到更多的关于它可用的属性的相关信息。

 

4. 使用intent filters(意图滤镜)

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值