gpt4 book ai didi

android - Android 中的程序化广播接收器与静态广播接收器

转载 作者:行者123 更新时间:2023-11-29 21:42:49 26 4
gpt4 key购买 nike

在我的应用中,我使用了 GCM 和推送通知。但是,我有点担心广播接收器。在应用程序中,我看到广播接收器被声明为 2 种类型。

  1. 通过 list 静态化

       <receiver
    android:name="com.google.android.gcm.GCMBroadcastReceiver"
    android:permission="com.google.android.c2dm.permission.SEND" >
    <intent-filter>
    <action android:name="com.google.android.c2dm.intent.RECEIVE" />
    <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
    <category android:name="com.myapp" />
    </intent-filter>
    </receiver>

    <uses-permission android:name="android.permission.WAKE_LOCK" />
  2. 程序化内部 Activity

       private final BroadcastReceiver mHandleMessageReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {

    String newMessage = intent.getExtras().getString(EXTRA_MESSAGE);

    WakeLocker.acquire(getApplicationContext());

    Toast.makeText(getApplicationContext(), "New Message: " + newMessage, Toast.LENGTH_LONG).show();

    WakeLocker.release();
    } };

我的问题如下:

问题 1: 我们能否删除广播接收器的编程声明并仍然获得完全有效的通知?如果是,是因为我们已经在 list 中有了它吗?

问题 2: 如果接收器被声明为静态和程序化的,那么什么时候调用哪个?哪一个有优先权?如果应用程序已打开并正在运行程序化的应用程序会被调用吗?如果应用程序未运行,静态应用程序?

最佳答案

问题 #1 对我来说没有意义,抱歉。

If the receiver is declared both static and programmatic, which one is called when ?

如果他们都有匹配同一广播的 IntentFilter,他们都会收到广播。对于常规广播,他们接收广播的顺序是不确定的。

Which one has the priority ?

对于常规广播,两者都没有“优先级”——两者都获得了广播,而且你无法知道谁先获得它(在多核设备上,他们可以同时获得广播,在理论)。 Ordered broadcasts 允许您控制传递的优先级,并且一次只有您的一个接收者会收到 ordered broadcast。

If the app is open and running the programmatic one gets called ?

如果“应用程序已打开并正在运行”意味着您已通过 registerReceiver() list 注册了您的接收器,那么它们都会收到广播。

and in case the app is not running, the static one ?

如果“未运行”意味着您已注销通过 registerReceiver() 注册的接收器,则只有在 list 中注册的接收器才能接收广播。

关于android - Android 中的程序化广播接收器与静态广播接收器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16645632/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com