Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 为什么可以';难道我不能追求意图而不是未决的意图吗?_Android_Android Intent - Fatal编程技术网

Android 为什么可以';难道我不能追求意图而不是未决的意图吗?

Android 为什么可以';难道我不能追求意图而不是未决的意图吗?,android,android-intent,Android,Android Intent,我是android的新手,当我搜索发送短信的代码时,我发现他使用了一个待定的意图,并开始了解它,我研究了第三方应用程序使用它来启动意图,并在将来采取行动,但我不清楚这些是如何工作的?不管怎样,将来每当一个挂起的意图被调用时,它就会调用一个意图,所以我们为什么不直接使用意图呢 我希望这个问题是清楚的,所以如果可能的话,请给我一些关于意向和未决意向的例子,请不要再给我解释这些定义 为什么我不能选择意向而不是未决的意向 您需要提供pendingent而不是Intent的原因: 1) 假设您为另一个应用

我是android的新手,当我搜索发送短信的代码时,我发现他使用了一个待定的意图,并开始了解它,我研究了第三方应用程序使用它来启动意图,并在将来采取行动,但我不清楚这些是如何工作的?不管怎样,将来每当一个挂起的意图被调用时,它就会调用一个意图,所以我们为什么不直接使用意图呢

我希望这个问题是清楚的,所以如果可能的话,请给我一些关于意向和未决意向的例子,请不要再给我解释这些定义

为什么我不能选择意向而不是未决的意向

您需要提供
pendingent
而不是
Intent
的原因:

1) 假设您为另一个应用程序提供了
意图
,以便该应用程序以某种方式使用它(例如,系统通知管理器是另一个应用程序)。现在想一想-此应用程序如何知道此意图是用于启动
活动
,还是用于启动
服务
或发送brodcast?回答:不可能!您可能认为它可以根据class参数来知道,但不要忘记也可以启动/Services

结论:另一个应用程序在不知道其意图的情况下,无法确切地知道使用此意图要做什么。这就是为什么在创建PendingEvent时,要使用
getBroadcast()
getActivity()
getService()
方法来创建它

这就是
pendingent
的全部内容之一:封装
Intent
+如何处理它

2) 让我们假设在一段时间后,您希望向该应用程序提供另一个
意图。现在,有两种选择:

  • 新的意图应取代之前提供的意图
  • 新的意图不应取代先前的意图
接收申请的人如何知道两者中的哪一个

答:由系统创建的挂起意图的HELD,通过向另一个相同的请求代码提供挂起意图,将自动替换以前的请求代码,而不是创建新的请求代码

3) 让我们假设对意图的引用是由应用程序直接持有和创建的,而不是由系统持有和创建的(如我在“2”中所写)。现在想象一下这个场景:

3.1)应用程序创建的意图对象

3.2)您的应用程序向另一个应用程序提供了对该意图对象的引用

3.3)您的申请过程因某种原因停止

3.4)WTF是否应该发生?对另一个应用程序持有的应用程序对象的引用???这对总司令来说是一团糟。因此,系统无法释放进程内存分配

这是场景背后的第二个原因,挂起的意图实例仅由系统持有,而不是由特定的应用程序持有

如果这还不够-还有安全问题


我不会给你写使用示例,因为任何谷歌搜索PendingEvent Turrial的结果都会有很好的示例,而且不管怎样-对于特定的用例,代码会有所不同…

主要的区别是,即使所属应用程序的PendingEvent进程被终止,PendingEvent本身将从其他进程中保持可用性。
如果创建应用程序稍后重新检索相同类型的PendingEvent,它将收到表示相同类型的PendingEvent,如果它仍然有效,还可以调用cancel()将其删除(实际上是前一个).

我喜欢你解释事情的方式,但坦率地说,我不能理解一些场景,这不是你叙述的错,因为我对android的知识有限,我刚开始使用android,我是一名新程序员,所以你能建议我如何学习安卓方面的专业知识吗,我在android.developers网站上找到了很多信息,但我无法理解他们的内容,所以你能以正确的方式指导我吗?@srujanmaddula:在我的回答中,我假设你理解并了解android的构建模块:服务、活动、广播接收器和意图。这是框架中最基本、最重要的组件。了解这些组件和生命周期可以让您快速掌握android专业知识。因此,我最好的建议是深入了解这些组件,并了解它们的所有内容。参考文献-