关闭

使用Intent启动Activity

标签: androidIntent启动Activity
482人阅读 评论(0) 收藏 举报
分类:

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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:171994次
    • 积分:2203
    • 等级:
    • 排名:第17202名
    • 原创:18篇
    • 转载:225篇
    • 译文:0篇
    • 评论:9条
    最新评论