精华内容
下载资源
问答
  • 静态注册广播

    千次阅读 2018-05-25 16:59:50
    广播是android四大组件之一,用到的地方还是挺多的,虽然现在用第三方的比较多,比如EventBus ,otto等,但是还是有很多的推送方需要用到静态注册的BroadcastReciever的,还是需要记录一下。广播有两种注册方式1....

    广播是android四大组件之一,用到的地方还是挺多的,虽然现在用第三方的比较多,比如EventBus ,otto等,但是还是有很多的推送方需要用到静态注册的BroadcastReciever的,还是需要记录一下。

    广播有两种注册方式

    1.动态注册

    MyBroadCastReceiver yBroadCastReceiver = new MyBroadCastReceiver();
    
    //实例化过滤器并设置要过滤的广播  
    IntentFilter intentFilter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
    
    //注册广播   
    myContext.registerReceiver(smsBroadCastReceiver,intentFilter, 
                 "android.permission.RECEIVE_SMS", null);

    注意的是需要在onDestroy的时候,需要进行unregisterReceiver,否则会消耗资源。

    2.静态注册,静态注册的广播可以在acticity注销的时候接收到,像之前的项目极光推送就需要静态注册,在后台也可以接收到广播信息

       </activity>
            <receiver android:name=".BroadCastReciever">
                <intent-filter android:priority="1000">
                    <action android:name="com.broadcast" />
                </intent-filter>
            </receiver>
            <receiver android:name=".Myreciever">
                <intent-filter android:priority="0">
                    <action android:name="com.broadcast" />
                </intent-filter>
            </receiver>
    在调用的地方
    Intent i = new Intent();
    i.setAction("com.broadcast");
    Bundle bundle = new Bundle();
    bundle.putString("bundle", response);
    i.putExtras(bundle);
    sendOrderedBroadcast(i, null);

    就可以发送广播,上面发送的是有序广播,根据优先级接受广播。
    展开全文
  • 从android 8.0(API26)开始,对清单文件AndroidManifest.xml中静态注册广播接收者作了限制(官方对耗电量的优化,避免APP滥用广播的一种处理方式)。 除了少部分的广播仍支持静态注册(如开机广播),其余的都会...

    问题原因:

    从android 8.0(API26)开始,对清单文件AndroidManifest.xml中静态注册广播接收者作了限制(官方对耗电量的优化,避免APP滥用广播的一种处理方式)。

    除了少部分的广播仍支持静态注册(如开机广播),其余的都会出现失效的情况。

     //开机广播
    <receiver
                android:name=".RebootReceiver"
                android:enabled="true"
                android:exported="true">
                <intent-filter>
                    <action android:name="android.intent.action.BOOT_COMPLETED" />
                </intent-filter>
    </receiver>

     

    解决方法:

    采用动态注册(代码注册)

    展开全文
  • 广播接收器注册一共有两种形式 : ...2.动态注册广播不是常驻型广播,也就是说广播跟随activity的生命周期。注意: 在activity结束前,移除广播接收器。 静态注册是常驻型,也就是说即使app已经退出,主要有相应的...

    广播接收器注册一共有两种形式 : 静态注册和动态注册.

     

    两者及其接收广播的区别:

    1.动态注册的广播永远要快于静态注册的广播,不管静态注册的优先级设置的多高,不管动态注册的优先级有多低。

    2.动态注册广播不是常驻型广播,也就是说广播跟随activity的生命周期。注意: 在activity结束前,移除广播接收器。

     静态注册是常驻型,也就是说即使app已经退出,主要有相应的广播发出,依然可以接收到,但此种描述自Android 3.1开始有可能不再成立。

     详情请关注 http://www.cnblogs.com/lwbqqyumidi/p/4168017.html

    3.在同一个优先级下,谁先启动的快,谁将先接收到广播。

     

    转载于:https://www.cnblogs.com/wumingchen/p/5750856.html

    展开全文
  • android 静态注册广播

    2020-10-26 18:26:30
    非常驻型广播依赖于注册广播的组件的生命周期,例如,在Activity中注册广播接收者,当Activity销毁后广播也随之被移除。这种广播事件在代码中注册 广播的接收类型有 普通广播(无序广播) 无序广播是一种完全异步执行...

    广播的注册的类型
    静态注册(常驻型广播)
    常驻型广播是当应用程序关闭后,如果接收到其他应用程序发出的广播,那么该程序会自动重新启动。常驻型广播在清单文件中注册

    动态注册(非常驻型广播)
    非常驻型广播依赖于注册广播的组件的生命周期,例如,在Activity中注册广播接收者,当Activity销毁后广播也随之被移除。这种广播事件在代码中注册

    广播的接收类型有
    普通广播(无序广播)
    无序广播是一种完全异步执行的广播,在广播发出去后,所有的广播接收器几乎都会在同一时刻接收到这条广播消息。

    有序广播
    有序广播则是一种同步执行的广播,在广播发出之后,同一时刻只会有一个广播接收器能够接收到这条消息。

    本地广播(应用内的广播)
    本地广播是无法通过静态注册的方式来接收的,其实这也完全可以理解,因为静态注册主要是为了让程序在未启动的情况下也能接受到广播,而发送本地广播时,我们的程序已经启动了,因此也完全不需要使用静态注册的功能

     

    静态注册广播

    AndroidManifest.xml

            <receiver android:name="com.sql.broadcast.MyReceiver">
                <intent-filter>
                    <action android:name="com.ty.CUSTOM_INTENT">
                    </action>
                </intent-filter>
            </receiver>
    public class MyReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            Toast.makeText(context, "接收到广播", Toast.LENGTH_LONG).show();
        }
    }
        public void sendBroadcast(){
            Intent intent = new Intent();
            intent.setAction("com.ty.CUSTOM_INTENT");
            sendBroadcast(intent);
        }

     

    展开全文
  •  Android 广播 动、静态注册广播(作为内部类使用)
  • 静态注册广播监听网络变化

    千次阅读 2017-02-06 15:48:03
    常用的IM聊天App中都会判断网络连接是否可用,今天我们就用静态注册注册广播来监听网络的变化:...然后在mainifest文件静态注册广播: android:name=".NetWorkChangeReceiver" android:enabled="true" android:e
  • 从android 8.0(API26)开始,对清单文件中静态注册广播接收者增加了限制,建议大家不要在清单文件中静态注册广播接收者 解决办法: 向其他应用中静态注册的广播接收者发送广播 //获取 Intent 对象 I...
  • 1. 前言 Android中的广播主要可以分为两种类型:标准广播和有序广播。 标准广播是一种完全异步...有序广播是一种同步执行的广播,在广播发出之后,同一时刻只会有一个广播接收器能够收到这条广播消息,当这个广播
  • 版权声明:本文为博主原创文章,未经博主允许不得转载:...第一个坑:Android8.0使用静态注册广播无效 贴代码: 点击发送: 静态注册: 结果: 如果没: intent.setPackage(getPacka...
  • 安卓8.0静态注册广播不能用的问题

    千次阅读 2018-08-22 11:12:25
    今天试了下静态注册广播,但是发现接收不到广播 解决方案如下: 在intent里面加 component(“广播接收者的包名”,“广播接收者路径”) 这样就能收到了 如下图: 查了下源码发现 ...
  •  ...Android静态注册广播receiver检测WIFI连接状况变化 在AndroidManifest.xml静态注册一个receiver,增加对WiFi状态变化时候Android系统发送的广播事件过滤器,从而达到监听、检测WiFi状态变化。
  • 静态注册广播每次收到 广播都会重新 生成 一个实例,所以在静态广播里的 非静态全局变量每次都会重置默认值。比如在第一次收到 广播把全局变量 boolean a 改为 true (全局变量 a 的默认值为 false), 第二次收到...
  • android 8.0 移除静态注册广播监听Implict BroadcastAndroid O 对于系统广播(Broadcast)的改变归根结底都是为了进一步的节省功耗。Google 在 Android Marshmallo (6.0, API level 23) 中引入了 Doze and App ...
  • Android O对隐式广播进行了限制,我们想要正常使用静态注册广播,有两种推荐做法: 方式一:发送显式广播 这种广播发送形式,需要我们指定需要接收广播的应用的包名和广播接收器类名,也就是一对一发送,严格说叫...
  • 广播接收器使用静态注册方式使用时,除了一些例外,这个接收器接收不到隐式广播。 注意这个“隐式”是重点。 看了网上几篇文章,对这个变更理解有误。错误的理解是:8.0后,广播接收器使用静态注册,是无法使用的...
  • android 静态注册广播注意事项

    千次阅读 2017-06-29 19:07:25
    通过静态方法注册广播的时候,至少需要注意以下两点: 通过静态注册的广播类,在其内部申明的接口将不能进行接口回调,只有动态注册的广播类才能进行接口回调。 如果广播类是内部类,那么,该广播类需要用static来...
  • 我想监听系统插入电源的广播但是我静态注册了一个广播无法监听到该广播 请问如何解决这个问题
  • 静态注册广播接收器

    2015-12-08 22:43:00
    新建继承自BroadcastReceiver的类,重写onReceive()方法public class BootCompleteReceiver extends BroadcastReceiver { //接受设备开机的广播 @Override public void onReceive(Context arg0, Intent arg1) { /...
  • 广播接收器使用静态注册方式使用时,除了一些例外,这个接收器接收不到隐式广播。 注意这个“隐式”是重点。 看了网上几篇文章,对这个变更理解有误。错误的理解是:8.0后,广播接收器使用静态注册,是无法使用的...
  • 最近研究广播,注册广播接收器的时候发现通过代码注册,可以接收广播,通过xml静态注册接受不到有人知道是什么原因吗 ``` package="com.example.wulechuan.broadcasttest2"> android:label="@string/app_...
  • 在发送广播时,不管是什么广播类型,系统默认直接增加了值为FLAG_EXCLUDE_STOPPED_PACKAGES的flag,导致即使是静态注册广播接收器,对于其所在进程已经退出的app,同样无法接收到广播。 也就是说无法通过静态注册...
  • 一、问题现象 在进行Android开发的时候,多有种方式和第三方应用进行通信,常见的有aidl、service...和对方的开发确认是静态注册(也就是在manifest文件中注册),这种方式应该不会有什么问题的,经过多次测试发现问...
  • 问题:按照《第一行代码》中写的自定义广播接收器,采用静态注册的方式,在Android8.0以及更高的版本中无法收到广播信息。需要给intent添加Component或者setPackage也行,就是需要更明确的指定处理这个intent的组件...
  • 在发送广播地方添加一下代码:intent.setComponent(new ComponentName(“清单文件中的package的值”,“广播接收者路径”))
  • 在Android 8.0的平台上,应用不能对大部分的广播进行静态注册,也就是说,不能在AndroidManifest文件对有些广播进行静态注册,这里必须强调是有些广播,因为有些广播还是能够注册的。比如,经过楼主测试,对接收...
  • android 8.0 移除静态注册广播

    千次阅读 2017-08-16 09:21:46
    Android O 前瞻 - 是时候和 Implict Broadcast 说再见了 Hevin 5 个月前 简评:果然省电是 Android O 的第一任务。...Android O 对于系统广播(Broadcast)的改变归根结底都是为了进一步的节省功耗。Goog
  • 在发送广播地方添加一下代码: intent.setComponent(new ComponentName(“清单文件中的package的值”,“广播接收者路径”))

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 33,462
精华内容 13,384
关键字:

静态注册广播