Activity是什么

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开发实战:从入门到产品》,京东与天猫均有销售:
京东销售地址
天猫销售地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值