PendingIntent.send(...)和Activity.startIntentSenderForResult(...)之间的区别

时间:2015-06-05 18:53:06

标签: android android-intent

似乎有(至少)两种方式在Android中发送Intents

除了后者只能启动API级别5并且结果以不同的方式传回(通过PendingIntent.OnFinishedActivity.onActivityResult(...))之外,两者之间存在任何根本区别?

我发现第一个更方便,因为它可以完全封装在库中,而不需要调用活动覆盖onActivityResult(...)来转发结果(like this: yuck!)。可以继续使用这种方法吗?

快速澄清,因为我看到有人在另一个问题上抱怨这个:上面的方法不是静态方法。我只是为了可读性而这样编写它们。

1 个答案:

答案 0 :(得分:0)

似乎这两种方法非常不同:

  • start...forResult(...)方法以允许将结果返回到执行start...forResult(...)的活动的方式启动意图或子活动。结果将传回活动的onActivityResult(...)方法。
  • 启动意图或子活动(包括PendingIntent.send(...))的所有其他方式都以“一劳永逸”的方式行事,并且不允许返回任何结果。一旦发送启动,就会调用OnFinished处理程序,无论是否需要一段时间才能完成。因此,传递到此处理程序的数据不一定与您通过onActivityResult(...)接收的内容有任何关系。实际上,就我而言,在{@ 1}} OnFinished的{​​{1}}之前,在子活动的对话显示之前,始终会立即调用resultCode处理程序。

多么糟糕......