在Google的C2DM示例代码中,当它们在BroadcastReceiver中接收到通知时,他们会调用:setResult(Activity.RESULT_OK, null /* data */, null /* extra */);
我不知道setResult是做什么的。这就是他们在Android文档中所说的:
有人可以解释它们的意思以及为什么我要称呼它吗?
完整的代码:
public class C2DMBaseReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
C2DMReceiver.runIntentInService();
setResult(Activity.RESULT_OK, null /* data */, null /* extra */);
}
}
最佳答案
setResult(...)
中的BroadcastReceiver
方法,它比跟踪目的更重要。
如果您熟悉Activity
的方法setResult(...)
,则可以以相同的方式在广播中想到此方法。但是,在 Activity 的情况下,没有获得类似于onActivityResult(int requestCode, int resultCode, Intent data)
的回调方法,而是使用广播setResult(...)
方法以特定顺序跟踪广播的结果,这就是documentation说:
这意味着您可以使用getResultCode()
,getResultData()
或getResultExtras()
方法来了解在为处理广播而注册的所有不同onReceive(Context, Intent)
中执行BroadcastReceiver
方法期间的情况。因此,您可以在所有接收者当前执行的BroadcastReceiver
中调用之前的sendBroadcast(...)
中知道代码执行的结果。
它之所以只说Context.sendOrderedBroadcast(),是因为对ojit_code方法的常规调用可能不会等待1个接收者完成其执行,然后再启动另一个线程以在另一个监听相同 Intent 的接收者中执行代码。
关于android - 为什么在BroadcastReceiver中调用setResult?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8990671/