不同应用程序之间的Activity切换 显式Intent和隐式Intent

  次阅读 作者:智能小宝 来源:互联网 2016-01-14 09:27 我要评论(0)

Android中与Intent相关的还有Action/Category及Intent Filter等,另外还有用于广播的Intent,这些元素掺杂在一起,导致初学者不太容易迅速掌握Intent的用法。在讲解这些名词之前,我们先来从 下面的例子中感受一下Intent的一些基本用法,看看它能做些什么,之后再来思考这种机制背后的意义。

对于大型软件开发经验较少的程序员来说,这可能是一个不太容易理解的抽象概念,因为它与我们平常使用的简单函数调用,或者通过库调用接口的方式不太 一样。在 Intent 的使用中你看不到直接的函数调用,相对函数调用来说,Intent 是更为抽象的概念,利用 Intent 所实现的软件复用的粒度是Activity/Service ,比函数复用更高一些,另外耦合也更为松散。

Android 中与Intent 相关的还有 Action/Category 及 Intent Filter 等,另外还有用于广播的 Intent ,这些元素掺杂在一起,导致初学者不太容易迅速掌握 Intent 的用法。在讲解这些名词之前,我们先来从下面的例子中感受一下 Intent 的一些基本用法,看看它能做些什么,之后再来思考这种机制背后的意义。

理解 Intent 的关键之一是理解清楚Intent 的两种基本用法:一种是显式的 Intent ,即在构造 Intent 对象时就指定接收者,这种方式与普通的函数调用类似, 只是复用的粒度有所差别;另一种是隐式的 Intent ,即Intent 的发送者在构造 Intent 对象时,并不知道也不关心接收者是谁,这种方式与函数调用差别比较大,有利于降低发送者和接收 者之间的耦合。另外 Intent 除了发送外,还可用于广播。

下面的一小节我们来看看显式 Intent 的用法。

显式的Intent(Explicit Intent)

同一个应用程序中的Activity切换

通常一个应用程序中需要多个UI 屏幕,也就需要多个Activity 类,并且在这些 Activity 之间进行切换,这种切换就是通过 Intent 机制来实现的。

在同一个应用程序中切换 Activity时,我们通常都知道要启动的 Activity 具体是哪一个,因此常用显式的 Intent 来实现。下面的例子用来实现一个非常简单的应用程序 SimpleIntentTest ,它包括两个UI 屏幕也就是两个 ActivitySimpleIntentTest类和 TestActivity 类, SimpleIntentTest类有一个按钮用来启动 TestActivity。

程序的代码非常简单, SimpleIntentTest类的源代码如下:

packagecom.tope.samples.intent.simple;

importandroid.app.Activity;

importandroid.content.Intent;

importandroid.os.Bundle;

importandroid.view.View;

importandroid.widget.Button;

publicclassSimpleIntentTestextendsActivityimplementsView.OnClickListener{

/**Calledwhentheactivityisfirstcreated.*/

@Override

publicvoidonCreate(Bundle savedInstanceState) {

super .onCreate(savedInstanceState);

setContentView(R.layout. main );

Button startBtn = (Button)findViewById(R.id. start_activity );

startBtn.setOnClickListener( this );

}

publicvoidonClick(View v) {

switch(v.getId()) {

caseR.id. start_activity :

Intent intent =newIntent( this , TestActivity. class );

startActivity(intent);

break ;

default :

break ;

}

}

}

上面的代码中,主要是为 Start activity按钮添加了 OnClickListener, 使得按钮被点击时执行 onClick() 方法, onClick() 方法中则利用了 Intent 机制,来启动 TestActivity,关键的代码是下面这两行:

Intent intent = new Intent( this , TestActivity. class );

startActivity(intent);

这里定义 Intent 对象时所用到的是 Intent 的构造函数之一:

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...