android – GCM BroadcastReceiver setResultCode使用

android – GCM BroadcastReceiver setResultCode使用,第1张

概述我正在使用 Android开发人员的GCM示例,无法理解其目的 setResultCode(Activity.Result_OK). 哪个组件收到此消息?谁在呼唤并接收它? 这是一个例子 public class GcmBroadcastReceiver extends WakefulBroadcastReceiver {@Overridepublic void onReceive(Conte 我正在使用 Android开发人员的GCM示例,无法理解其目的
setResultCode(Activity.Result_OK).
哪个组件收到此消息?谁在呼唤并接收它?

这是一个例子

public class GcmbroadcastReceiver extends WakefulbroadcastReceiver {@OverrIDepublic voID onReceive(Context context,Intent intent) {    Componentname comp = new Componentname(context.getPackagename(),GcmIntentService.class.getname());    startWakefulService(context,(intent.setComponent(comp)));    setResultCode(Activity.RESulT_OK); // ?????}}

谢谢.

解决方法 您的应用收到GCM消息的广播是有序广播.

Ordered broadcasts (sent with Context.sendOrderedbroadcast) are delivered to one receiver at a time. As each receiver executes in turn,it can propagate a result to the next receiver,or it can completely abort the broadcast so that it won’t be passed to other receivers. The order receivers run in can be controlled with the androID:priority attribute of the matching intent-filter; receivers with the same priority will be run in an arbitrary order.

这意味着如果您的应用程序有多个配置为处理GCM消息的广播接收器,它们将一个接一个地调用(按照依赖于其优先级的顺序).例如,如果您的应用使用某个使用GCM的第三方库,您可能有多个广播接收器处理GCM消息,此外您的应用程序直接使用GCM.在这种情况下,您希望您的应用只处理自己的消息,而不是处理发送到第三方库的消息(反之亦然).

如果其中一个处理GCM消息而您不希望其他人处理它,则可以中止广播.你可以通过setResultCode(Activity.RESulT_CANCEL)来实现.另一方面,setResultCode(Activity.RESulT_OK)会将第一个接收器的结果传播到下一个接收器.

在这种情况下,您的代码将如下所示:

public class GCMbroadcastReceiver extends WakefulbroadcastReceiver {    @OverrIDe    public voID onReceive(Context context,Intent intent) {        if (intent.getExtras ().get("from").equals (SENDER_ID_OF_YOUR_APP) {          Componentname comp = new Componentname(            GcmIntentService.class.getPackage().getname(),GcmIntentService.class.getname());          startWakefulService(context,(intent.setComponent(comp)));          // abort the broadcast          setResultCode(Activity.RESulT_CANCEL);        } else          // don't abort the broadcast          setResultCode(Activity.RESulT_OK);        }    }}

如果您只有一个处理GCM消息的广播接收器,则对setResultCode的调用确实很重要.

总结

以上是内存溢出为你收集整理的android – GCM BroadcastReceiver setResultCode使用全部内容,希望文章能够帮你解决android – GCM BroadcastReceiver setResultCode使用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1130051.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存