使用createPendingResult从服务回调

时间:2014-08-14 01:00:34

标签: android android-activity

我知道你应该创建一个PendingIntent调用Activity#createPendingResult()方法,但文档的篇幅有限,不能解释如何从中触发Activity#onActivityResult()。我该如何触发它?

2 个答案:

答案 0 :(得分:3)

除了你描述的方法之外,

PendingIntents和onActivityResult没有关系:createPendingResult。

PendingIntents用于允许其他应用(或Android操作系统)保留在您的应用中启动活动的引用。

onActivityResult与startActivityForResult()方法一起使用。当一个活动(ActivityA)在您的应用中启动另一个活动(ActivityB)时,您可以让ActivityA等待来自ActivityB的响应。用户与您的应用交互时会发生这些事件。

因此,相比之下,通常PendingIntents用于向应用程序发出另一个应用程序信号,而当应用程序中的某个活动正在等待另一个活动的结果时,会使用onActivityResult。如果您的活动期望其他应用的结果与用户与您的应用互动的行为类似,那么您使用createPendingResult - 它将返回您的活动并以类似的方式进行处理你应用的一部分。

这里的关键是另一个活动可能不会对您的应用程序执行任何有用的处理。此外,您应该注意Android可能会破坏您的应用程序(由于内存有限),然后重新创建它以处理结果。因此,除非您在处理此类PendingIntent方面小心谨慎,否则此过程可能会导致意外或不可预测的结果。

答案 1 :(得分:0)

  

我知道你应该创建一个PendingIntent callingActivity#createPendingResult()方法......

创建PendingIntents有多种方法,您使用哪种方法取决于您的目标。引用的短语听起来像OP不知道那样。我将假设这是一个相当高级的技术问题并正确回答:

在想要返回结果的组件中,您可以调用

pendingResult.send(...)

选择send方法的一个版本,允许您指定结果代码和“填充”意图。例如,

public void send (Context context, int code, Intent intent)

可能需要进行一些实验,但基本的想法是,当您想要“兑换”未决意图时,请使用send()方法。