zoukankan      html  css  js  c++  java
  • Android Broadcast Receiver注册

    之前有关 Broadcast Receiver的链

    • 动态注册
      1.我们新建一个广播接受类,我们创建一个内部类让他继承BroadcastReceiver,并且重新其中当有广播来到时执行的方法onReceive();
    class networkChangeReceiver extends BroadcastReceiver{
    		@Override
    		public void onReceive(Context context, Intent intent) {
    		}
    	}
    

    2.然后我们创建一个IntentFilter实例,并给他添加一个值,并创建一个networkChangeReceiver实例,调用registerReceiver();方法进行注册,将networkChangeReceiver实例和IntentFilter都传进去.这样我们的广播就实现了.

    intentFilter=new IntentFilter();
    		intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
    		networkChangeReceiver=new networkChangeReceiver();
    		registerReceiver(networkChangeReceiver, intentFilter);
    

    3.要注意的是,动态注册的广播接收器一定要取消注册才行,所以我们重写onDestroy();方法,并通过unregisterReceiver();方法来实现.

    @Override
    	protected void onDestroy() {
    		super.onDestroy();
    		unregisterReceiver(networkChangeReceiver);
    	}
    
    • 静态注册(实现开机启动)
      1.我们新建一个广播接收器,新建MyBroadcastReceiver来继承BroadcastReceiver.(这里我们没有使用内部类的形式)
    public class MyBroadcastReceiver extends BroadcastReceiver {
    	@Override
    	public void onReceive(Context context, Intent intent) {
    		Toast.makeText(context, "MyBroadcastReceiver", Toast.LENGTH_SHORT).show();
    	}
    }
    
    

    2.我们在AndroidManifest.xml中将这个广播接收器的类名注册进去.

    <receiver 
               android:name="com.example.broadcasttest.MyBroadcastReceiver" >
                <intent-filter >
                    <action android:name="candroid.intent.action.BOOT_COMPLETEN"/>
                </intent-filter>
            </receiver>
    

    3.静听系统开机广播需要声明权限.

    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
    
  • 相关阅读:
    请教JDBC中的thin和OCI的区别
    ORACLE中查询被锁定的表,以及如何解锁
    oracle批量插入测试数据
    oracle查看用户表
    decode 函数及其用法
    oracle序列详解
    MySQL数据库远程连接开启方法
    CentOS下MySQL忘记root密码解决方法【转载】
    oracle实现同时多表插入
    MyCat:第七章:MyCAT的亿级别任务
  • 原文地址:https://www.cnblogs.com/stareblankly/p/5076157.html
Copyright © 2011-2022 走看看