使用Intent启动Activity

我的未来我决定 提交于 2020-03-08 17:09:47
   

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

 

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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!