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(意图滤镜)

 

 

在 Java 中,ActivityAndroid 应用程序的核心组件之一。它代表了用户与应用程序交互的一个屏幕,类似于 Windows 中的窗口。Activity 提供了一个用户界面,用于显示应用程序的内容,并处理用户输入。在本文中,我们将详细介绍 Java 中的 Activity。 1. Activity 的生命周期 Activity 的生命周期是指从创建到销毁的整个过程。Activity 的生命周期可以分为以下几个部分: 1.1. 创建阶段 在创建阶段,Activity 将完成以下几个步骤: 1.1.1. onCreate():当 Activity 被创建时,系统会调用 onCreate() 方法。在此方法中,开发者可以初始化 Activity 的布局、绑定事件等。 1.1.2. onStart():当 Activity 准备好与用户进行交互时,系统会调用 onStart() 方法。在此方法中,开发者可以完成一些初始化工作,例如开始动画。 1.1.3. onResume():当 Activity 成为用户焦点并可以与用户进行交互时,系统会调用 onResume() 方法。在此方法中,开发者可以开始处理用户输入事件。 1.2. 运行阶段 在运行阶段,Activity 将完成以下几个步骤: 1.2.1. onPause():当 Activity 失去焦点并不再与用户进行交互时,系统会调用 onPause() 方法。在此方法中,开发者可以停止处理用户输入事件。 1.2.2. onStop():当 Activity 不再可见时,系统会调用 onStop() 方法。在此方法中,开发者可以完成一些清理工作,例如停止动画。 1.3. 销毁阶段 在销毁阶段,Activity 将完成以下几个步骤: 1.3.1. onDestroy():当 Activity 被销毁时,系统会调用 onDestroy() 方法。在此方法中,开发者可以完成一些清理工作,例如释放资源。 2. Activity 的启动方式 在 Java 中,可以通过以下方式启动一个 Activity: 2.1. 显式启动 显式启动是指通过明确指定要启动的 Activity 的类名来启动 Activity。例如: ```java Intent intent = new Intent(this, AnotherActivity.class); startActivity(intent); ``` 2.2. 隐式启动 隐式启动是指通过指定 Action、Category、Data 等信息来启动 Activity,系统将根据这些信息匹配合适的 Activity。例如: ```java Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.setData(Uri.parse("http://www.example.com")); startActivity(intent); ``` 3. Activity 的传值 在 Java 中,可以通过 Intent 对象来传递数据到另一个 Activity。具体步骤如下: 3.1. 在发送 Intent 时,通过 putExtra() 方法来添加数据: ```java Intent intent = new Intent(this, AnotherActivity.class); intent.putExtra("name", "张三"); intent.putExtra("age", 18); startActivity(intent); ``` 3.2. 在接收 Intent 时,通过 getIntent() 方法获取 Intent 对象,并通过 getXXXExtra() 方法获取数据: ```java Intent intent = getIntent(); String name = intent.getStringExtra("name"); int age = intent.getIntExtra("age", 0); ``` 4. Activity 的返回值 在 Java 中,可以通过 startActivityForResult() 方法启动一个 Activity,并在该 Activity 中设置 setResult() 方法来返回数据。具体步骤如下: 4.1. 在发送 Intent 时,通过 startActivityForResult() 方法启动另一个 Activity: ```java Intent intent = new Intent(this, AnotherActivity.class); startActivityForResult(intent, REQUEST_CODE); ``` 4.2. 在接收 Intent 时,通过 onActivityResult() 方法获取返回的数据: ```java @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) { String result = data.getStringExtra("result"); } } ``` 4.3. 在被返回的 Activity 中,通过 setResult() 方法设置返回的数据: ```java Intent intent = new Intent(); intent.putExtra("result", "返回数据"); setResult(RESULT_OK, intent); finish(); ``` 以上就是 Java 中 Activity详解,希望对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值