Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.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 Pendingintent - Fatal编程技术网

Android 寻求门外汉对未决意图概念的解释

Android 寻求门外汉对未决意图概念的解释,android,android-pendingintent,Android,Android Pendingintent,这是一个相当陈旧的问题,但坦率地说,我还没有找到一个能满足我好奇心的答案 亲爱的读者,在您跳到android开发者参考向我粘贴文本之前,请注意我已经阅读了意图/未决意图文档,我还没有解决我的困惑 让我印象深刻的是,意图模型是android系统的核心,因此是高度通用的。正因为如此,我所看到的关于它的用法的例子往往是多种多样的。这种变化混淆了我试图学习的概念,这是令人沮丧的 我的问题写得很简单,但很难用简单的语言来解释。我理解意图是对其他活动的信息,其他活动可以在其清单中声明其利益。未决的意图,意图

这是一个相当陈旧的问题,但坦率地说,我还没有找到一个能满足我好奇心的答案

亲爱的读者,在您跳到android开发者参考向我粘贴文本之前,请注意我已经阅读了意图/未决意图文档,我还没有解决我的困惑

让我印象深刻的是,意图模型是android系统的核心,因此是高度通用的。正因为如此,我所看到的关于它的用法的例子往往是多种多样的。这种变化混淆了我试图学习的概念,这是令人沮丧的

我的问题写得很简单,但很难用简单的语言来解释。我理解意图是对其他活动的信息,其他活动可以在其清单中声明其利益。未决的意图,意图的包装,使我困惑

  • 我看到了有关权限和令牌的文档。我明白了,但是为什么挂起的意图需要作为一个单独的实体——它支持什么行为
  • 挂起的意图会导致哪些活动/任务生命周期行为
  • 何时需要广播接收器
  • 广播接收机的限制是什么
  • 我意识到这些都是非常新的问题(我是),但我非常想理解这些核心概念,所以我不必太依赖示例/指南/官方文档


    欢迎各位反馈。谢谢。

    PendingEvent的主要目的是给另一个应用程序书面许可来代替您做一些事情。应用程序在允许执行的操作方面受到限制,这主要取决于以下两个因素:

    • 能见度。其他应用程序无法调用未提供公共可见(或任何)意图筛选器的服务或活动等组件。应用程序只能使用指定其包和类名的显式意图调用它们
    • 权限。每个应用程序都可以请求一定数量的权限。这些大部分是预定义的权限,但您也可以选择定义自己的权限,尽管我从未使用过。您的应用程序无法执行任何超出这些权限的操作
    现在,有了待定的意图,如果一个具有所需权限和可见性的应用程序特别允许您代替她做某件事,那么您可以克服这两个限制。应用程序可以允许您调用她的一个私人活动,例如,如果它给您一个包含所述活动的明确意图的挂起意图

    [编辑] 例如,它们与报警管理器一起使用。它通过给报警管理器一个(待定)意图来告诉报警管理器做什么和什么时候做。由于时间到达时,应用程序可能不再存在,因此报警管理器将不得不为您发送它。这意味着这些意图只能执行alarm manager允许执行的操作,而不能执行应用程序允许执行的操作。如果允许alarm manager简单地执行任何操作,那么每个应用程序都可以通过将alarm manager用作代理来执行任何操作。因此,您必须使用挂起意图专门授予报警管理器特定意图所需的权限。[/edit]

    除此之外,至少就用法而言,与常规意图没有太大区别。它确实变得有点复杂,有粘性的意图等,但这是它的一般要点,至少据我所知

    当您想要对某些应用程序或其他应用程序的事件作出反应时,需要广播接收器。广播接收器是不可见的,它不创建任何形式的视图,也不涉及任何形式的用户交互。这样做的好处是,无论您的应用程序(或者更确切地说,您的活动)当前是否正在运行,这种情况都可能发生


    一个广播接收器只被允许在10秒钟内做一些事情,之后它就会被系统杀死。因此,如果你想执行任何类型的长时间运行的流程,你必须使用后台服务,或者打开一个活动让你的用户做一些事情。

    优秀的总结。我现在对这个概念更有信心了。谢谢你的快速回答。