似乎有(至少)两种方式在Android中发送Intents:
除了后者只能启动API级别5并且结果以不同的方式传回(通过PendingIntent.OnFinished
与Activity.onActivityResult(...)
)之外,两者之间存在任何根本区别?
我发现第一个更方便,因为它可以完全封装在库中,而不需要调用活动覆盖onActivityResult(...)
来转发结果(like this: yuck!)。可以继续使用这种方法吗?
快速澄清,因为我看到有人在另一个问题上抱怨这个:上面的方法不是静态方法。我只是为了可读性而这样编写它们。
答案 0 :(得分:0)
似乎这两种方法非常不同:
start...forResult(...)
方法以允许将结果返回到执行start...forResult(...)
的活动的方式启动意图或子活动。结果将传回活动的onActivityResult(...)
方法。PendingIntent.send(...)
)的所有其他方式都以“一劳永逸”的方式行事,并且不允许返回任何结果。一旦发送启动,就会调用OnFinished
处理程序,无论是否需要一段时间才能完成。因此,传递到此处理程序的数据不一定与您通过onActivityResult(...)
接收的内容有任何关系。实际上,就我而言,在{@ 1}} OnFinished
的{{1}}之前,在子活动的对话显示之前,始终会立即调用resultCode
处理程序。多么糟糕......