Activity是什么

来源:互联网 发布:树莓派 gpio 编程 编辑:程序博客网 时间:2024/06/02 05:39
Activity是Android组件中最基本也是最为常见用的四大组件(Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器)之一。一个Activity是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务,例如拨号、拍照、发送email、看地图。每一个activity被给予一个窗口,在上面可以绘制用户接口。窗口通常充满屏幕,但也可以小于屏幕而浮于其它窗口之上。一个应用程序通常由多个activities组成,他们通常是松耦合关系。通常,一个应用程序中的activity被指定为“main”activity,当第一次启动应用程序的时候呈现给用户的那个activity。每一个activity然后可以启动另一个activity为了完成不同的动作。每一次一个activity启动,前一个activity就停止了,但是系统保留activity在一个栈上(“back stack”)。当一个新activity启动,它被推送到栈顶,取得用户焦点。Back Stack符合简单“后进先出”原则,所以,当用户完成当前activity然后点击back按钮,它被弹出栈(并且被摧毁),然后之前的activity恢复。当一个activity因新的activity启动而停止,它被通知这种状态转变通过activity的生命周期回调函数。有许多回调函数一个activity可能会收到,源于它自己的状态变化-无论系统创建它、停止它、恢复它、摧毁它-并且每个回调提供你完成适合这个状态的指定工作的机会。例如,当停止的时候,你的activity应该释放任何大的对象,例如网络数据库连接。当activity恢复,你可以重新获得必要的资源和恢复被中断的动作。这些状态转换都是activity的生命周期的部分(下一节会详细论述)。创建一个activity,你必须创建一个Activity的子类(或者一个Activity的子类的子类)。必须实现这个方法onCreate()。系统调用它当创建你的activity的时候。在我们的实现中,应该初始化activity的基本的组件。更重要的是,这里是我们必须调用setContentView()来定义activity用户接口的地方。Android提供大量预定义的view,我们可以使用来设计和组件我们的布局。“Widgets”是一种给屏幕提供可视化(并且交互)元素的view,例如按钮、文件域、复选框或者仅仅是图像。“Layouts”是继承于ViewGroup的View,提供特殊的布局模型为它的子view,例如线程布局、格子布局或相关性布局。我们可以子类化View和ViewGroup类(或者存在的子类)来创建自己的widget和而已并且应用它们到你的activity布局中。最普通的方法是定义一个布局使用view加上XML布局文件保存在你的程序资源里。这样,我们可以单独维护我们的用户接口设计,而与定义activity行为的代码无关。可以设置布局作为UI使用setContentView(),传递资源布局的资源ID。同时,必须把activity在manifest文件中声明,不然它不能被系统访问。声明格式如例:
<application    android:allowBackup="true"    android:icon="@mipmap/ic_launcher"    android:label="@string/app_name"    android:supportsRtl="true"    android:theme="@style/AppTheme">    <activity android:name=".MainActivity">        <intent-filter>            <action android:name="android.intent.action.MAIN" />            <category android:name="android.intent.category.LAUNCHER" />        </intent-filter>    </activity></application>
一个<activity>元素也能指定多种intent filters--使用<inetent-filter>元素--为了声明其它应用程序可以激活它。当创建一个新应用程序使用Android SDK工具,存根activity自动创建,包含一个intent filter,声明了activity响应"main"动作,并且应该被 放置 在"launcher"分类。Intent filter看起来像这个样子。<action>元素指定这是一个"main"入口点对这个应用程序。<category>元素指定,这个activity应该被列入系统应用程序列表中(为了允许用户启动这个activity)。如果希望应用程序自包含,并且不希望别的应用程序激活它的activities,那么不需要任何其它intent filters。只有一个activity应该有“main"动作和”launcher“分类,就像前面这个例子。不希望被其它应用程序访问原Activities应该没有intent filters。如果我们希望activity响应隐含的intents,从其它应用程序,那么你必须为这个activity定义额外的intent filters。每一种你希望响应的类型的intent,你必须包含<intent-filter>,包含<action>元素,可选的,一个<category>元素并且/或一个<data>元素。这些元素指定你的activity能响应的intent的类型。除了上面简述的Activity的生命周期,以及如何创建一个Activity、如何声明这个Activity之外。Activity的一些常用的基本方法也比较重要,如下所示:
方法名 方法描述 public final View findlliewById(int id) 根据组件id获取组件对象 public void setEnabled(boolean enabled) 设置是否可编辑 public Window getWindow() 获取一个window对象 public void setContentView(int layoutResID) 设置显示组件 public void setContentView(View view) 设置显示组件 public void addContentView(View view) 动态添加组件

表中列出来Activity的基本的方法,除此之外,Activity类还提供了与intent、service等等相关的方法,等讲解相关知识点时在做阐述。
上面就是Activity的简单介绍,下一篇文章我将讲述Activity的生命周期的内容。这里我会开一个系列文章讲述android开发的内容,欢迎大家阅读。同时也欢迎大家购买我的书《Android开发实战:从入门到产品》,京东与天猫均有销售:
京东销售地址
天猫销售地址

原创粉丝点击