3-Activity简介

配置清单

声明Activity

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

声明intent过滤器
Intent过滤器是Android平台的一项非常强大的功能。借助这项功能,您不但可以根据显式请求启动Activity,还可以根据隐式请求启动Activity。例如,显示请求可能会告诉系统“在Gmail应用中启动”发送电子邮件‘Activity’,而隐式请求可能会告诉系统“在任何能够完成此工作的Activity中启动”发送电子邮件‘屏幕’。房系统界面询问用户使用哪个应用来执行任务时,这就是intent过滤器在起作用。
要使用此功能,您需要在元素中声明属性。此元素的定义包括元素,以及可选的元素和元素。这些元素祝贺在一起,可以指定Activity能够响应intent类型。例如,以下代码段展示了如何配置一个发送文本数据并接收其它Activity的文本数据发送请求的Activity:

   <activity android:name=".ExampleActivity" android:icon="@drawable/app_icon">
    <intent-filter>
        <action android:name="android.intent.action.SEND" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:mimeType="text/plain" />
    </intent-filter>
</activity>

在此示例中,元素指定该Activity会发送数据。将元素声明为DEFAULT可使Activity能够接收启动请求。元素指定此Activity可以发送的数据类型。以下代码展示了如何用上述Activity:

  // Create the text message with a string
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT,textMessage);
// Start the activity
startActivity(sendIntent);

如果您打算构建一个独立的应用,不允许其他应用激活其Activity,则不需要任何其它intent过滤器。您不想让其它应用访问的Activity不应包含intent过滤器,您可以自己使用显式intent启动它们。

声明权限
您可以使用清单的标记来控制哪些因可以启动某个Activity,父Activity和子Activity必须在其清单中具有相同的权限,前者才能启动后者。如果您为父Activity声明了元素,则每个子Activity都必须具有匹配的元素。
例如,假设您的应用想要使用一个名为SocialApp的应用在社交媒体上分享文章,则SocialApp的应用在社交媒体上分享文章,则SocialApp本身必须定义调用t它的应用所需具备的权限:

 <manifest>
    <activity android:name="...."
       android:permission=”com.google.socialapp.permission.SHARE_POST”

    />

然后,为了能够调用SocialApp,您的应用必须匹配SocialApp清单中设置的权限:

 <manifest>
   <uses-permission android:name="com.google.socialapp.permission.SHARE_POST" />
</manifest>

管理Activity声明周期
一个Activity在其生命周期中会经历多种状态。您可以使用一系列回调来处理状态之间的转换。下面介绍这些回调:
onCreate()
您必须实现此回调,它会在系统创建您的Activity时触发。您的实现应该初始化Activity的基本组件:例如,您的应用应该在此处创建视图并将数据绑定到列表。最重要的,您必须在此处调用setContentView()来定义Activity界面的布局。
onCreate()完成后,下一个回调将是onStart()。

onStart
onCreate退出后,Activityj将进入“已启动”状态,并对用户可见。此回调包含Activity进入前台与用户进行互动之前的最后准备工作。

onResume()
系统会在Activity开始于用户互动之前调用此回调。此时,该Activity位于Activity堆栈的顶部,并会捕获所有用户输入。应用的大部分核心功能都是在onResume()方法中实现的。
onResume()回调后面总是跟着onPause()回调。

onPause()
当Activity失去焦点并进入“已暂停”状态时,系统就会调用onPause()。例如,当用户点按“返回“或“最近使用的应用”按钮时,就会出现此状态。当系统为您的Activity调用onPause()时,从技术上来说,这意味着您的Activity仍然部分可见,但大多数情况下,这表明用户正离开该Activity,该Activity很快将进入“已停止”或“已恢复”状态。

如果用户希望界面继续更新,则处于“已暂停”状态的Activity也可以继续更新界面。例如,显示导航地图屏幕或播放媒体播放器的Activity就属于此类Activity。即使此类Activity失去了焦点,用户仍希望其界面继续更新。

您不应该使用onPause()来保存应用或用户数据、进行网络呼叫或执行数据库事务。
onPause()执行完毕后,下一个回调为onStop()或onResume(),具体取决于Activity进入“已暂停”状态后发生的情况。

onStop()
当Activity对用户不再可见时,系统会调用onStop()。出现这种情况的原因可能是Activity被销毁,新的Activity启动,或者现有的Activity正在进入“已恢复”状态并覆盖了已停止的Activity。在所有这些情况下,停止的Activity都将不再可见。

系统调用的下一个回调将是onRestart()(如果Activity重新与用户互动)或者onDestory()(如果Activity彻底停止)。

onRestart()
当处于“已停止”状态的Activity即将重启时,系统就会调用此回调。onRestart()会从Activity停止时的状态恢复Activity。
此回调后面总是跟着onStart()。

**onDestory()**当处于“已停止”状态的Activity即将重启时,系统就会调用此回调。onReStart()会从Activity停止时的状态恢复Activity。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值