2

伙计们,

这是一个新手问题。我已经阅读了几篇关于意图的文章,但对于开始活动时意图背后的主要思想是什么,我感到有些困惑。如果我知道我必须创建和显示一个活动,为什么我不能做一些像下面这样简单的事情?

 MyActivity a = new MyActivity();
 a.show();

预先感谢您的帮助。

问候,
彼得

4

4 回答 4

4

一个活动有一个生命周期,这是由框架管理的。我想说为了获得额外的生命周期,Android 引入了一组规则来启动一个活动(startActivity)。对于附加组件,Intent 不仅是启动您的活动。Intent 可用于启动其他第三方或内置视图/服务/目标。这可能是他们引入意图的另一个原因。只是我的两分钱。

于 2013-09-18T22:34:23.440 回答
2

意图是对要执行的操作的抽象描述。它可以与 startActivity 一起使用来启动一个 Activity,broadcastIntent 将其发送到任何感兴趣的 BroadcastReceiver 组件,以及 startService(Intent) 或 bindService(Intent, ServiceConnection, int) 与后台服务通信。

Intent 提供了一种在不同应用程序中的代码之间执行后期运行时绑定的工具。它最重要的用途是在活动的启动中,它可以被认为是活动之间的粘合剂。它基本上是一种被动数据结构,包含对要执行的操作的抽象描述。

点击这里了解更多信息。

于 2013-09-18T22:30:28.197 回答
2

意图在应用程序中的活动之间以及应用程序之间进行通信。

你的例子:

MyActivity a = new MyActivity();
a.show();

假设 Android 只是对象,因此实例化一个 Activity 并以某种方式显示它会使它出现。但是,情况并非如此。Android系统做得更多。您的应用程序中的活动在 Android 框架内是“浮动的”。大多数使活动打勾的因素对您来说是不可见的。特别是,Android 特定的线程模型和系统与 Android 组件(如活动)通信的方式是不可见的。

我不会对此进行大部分讨论,但是 Intents 启动 Activity 的另一个优势是 Activity 可以将自己添加为想要执行特定任务的 Intents 的候选者。假设我有一个编辑图像的应用程序。通过过滤对我可以处理的 MIME 类型具有操作 ACTION_EDIT 的 Intent,我可以轻松地让自己被发现。这正是 Android 如何实现当您尝试对文件执行某些操作时出现的应用程序列表的方式。

于 2013-09-18T23:30:22.753 回答
1

简而言之Intent,就是您对 Android 设备的关注您的活动可以通过与 Android 对话Intent并在您的手机上收听“任何变化”。

就像坐在户外大房子门口旁边的“祖母”,听着所有的谈话、八卦并通知你。

于 2013-09-18T22:31:33.757 回答