使用Intent启动Activity

Intent的最常用的用途是绑定应用程序组件。Intent用来在应用程序的Activity间启动、停止和传输。

 

这一章节中关于启动新的Activity的提示,也同样适用于Service。第8章可以了解到关于启动(和创建)Service的细节。

 

为了打开应用程序中不同的画面(Activity),调用startActivity,传入一个Intent,如下面的片段所示:

 

startActivity(myIntent);

 

Intent既可以显式的指定类去打开,也可以包含目标需要执行的动作。在后者的情况下,运行时会选择Activity去打开,使用一个熟知的处理过程——“Intent解析”

 

startActivity方法查找、启动与Intent最匹配的单一Activity

 

当使用startActivity时,新启动的Activity结束是你的应用程序不会接收到任何通知。为了追踪打开画面的反馈,使用startActivityForResult方法,在后面会描述更多细节。

 

显式启动新的Activity

 

你在第2章已经了解到,应用程序由很多个内部相互联系的屏幕——Activity组成,这些Activity必须包含在应用程序的manifest中。为了连接它们,你可能想要显式的指定打开哪个Activity

 

为了显式地选择一个Activity类来启动,需要创建一个新的Intent,指定当前应用程序的上下文和要启动的Activity的类。然后传递这个IntentstartActivity,如下的代码片段所示:

 

Intent intent = new Intent(MyActivity.this, MyOtherActivity.class);

startActivity(intent);

 

在调用startActivity之后,新的Activity(在这个例子里,是MyOtherActivity)将被创建,并变成可见和活跃状态,移到Activity栈的最顶端。

 

代码调用新Activityfinish方法会关闭它,并从栈中移除。可变通的地方,用户可以通过设备的Back按钮导航到先前的Activity

 

隐式Intent和运行时绑定

 

隐式Intent是一种让匿名应用程序组件服务动作请求的机制。当创建一个新的隐式Intent时,你指定要执行的动作,作为可选项,你可以提供这个动作所需的数据。

 

当你使用这个新的隐式Intent来启动Activity时,Android会在运行时解析它,找到最适合在指定的数据类型上执行动作的类。这意味着,你可以创建使用其它应用程序的工程,而不需要提前精确地知道你会借用哪个应用程序的功能。

 

例如,如果你想让用户在应用程序里打电话,与其实现一个新的拨号,不如使用一个隐式的Intent来请求一个在一个电话号码(URI表示)上的动作(拨一个号码),如下代码片段所示:

 

if (somethingWeird && itDontLookGood)

{

Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse(“tel:555-2368”));

startActivity(intent);

}

 

Android解析这个Intent并启动一个提供了能在一个号码上执行拨号动作的Activity,在这里,是拨号Activity

 

一些本地的应用程序提供了在特定数据上执行动作的组件。第三方应用程序,包括你的,也可以注册来支持新的动作或为本地动作提供一种替代的方法。你会在本章的后面了解到一些本地的动作。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值