BroadcastRecever

##简介
注册分为静态注册和动态注册
静态注册是在xml中进行注册是常驻型的不随着程序的关闭而关闭
动态注册在代码中进行注册不是常驻型随着程序的关闭而关闭
###多个界面公用一个broadcastrecever

public abstract class MyBaseFragment extends Fragment {
	public static final String ACTION_1 = "com.example.action1";
	public static final String ACTION_2 = "com.example.action2";
	@Override
	public void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		IntentFilter intentFilter = new IntentFilter();
		intentFilter.addAction(ACTION_1);
		intentFilter.addAction(ACTION_2);
		getActivity().registerReceiver(receiver, intentFilter);
		Intent intentserver  = new Intent(getActivity(),MyNotificationServer.class);
	    getActivity().startService(intentserver);
	}
	protected abstract void doAction1();

	protected abstract void doAction2(String arg);

	BroadcastReceiver receiver = new BroadcastReceiver() {

		@Override
		public void onReceive(Context context, Intent intent) {
			String action = intent.getAction();
			if (action.equals(ACTION_1)) {
				doAction1();
			} else if (action.equals(ACTION_2)) {
				String arg = intent.getStringExtra("arg");
				doAction2(arg);
			}
		}
	};
	@Override
	public void onDestroy() {
		// TODO Auto-generated method stub
		super.onDestroy();
		getActivity().unregisterReceiver(receiver);
	}

}
	@Override
	protected void doAction1() {
		// TODO Auto-generated method stub
		
	}
	@Override
	protected void doAction2(String arg) {
		// TODO Auto-generated method stub
		Log.d("tag", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"+arg);
		if (arg.equals("1")) {
			Log.d("tag", arg);
			handler.sendEmptyMessage(MyConfig.UPDATA_TOKEN_WFJ);
//		   image.setVisibility(View.VISIBLE);	
		}
		
	}
Intent intent = new Intent();
					intent.setAction(MyBaseFragment.ACTION_1);
					intent.setAction(MyBaseFragment.ACTION_2);
					intent.putExtra("arg","1");
					sendBroadcast(intent);
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" tools:context=".MainActivity">

   <Button
       android:id="@+id/button_send"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="发送广播"/>
    <Button
        android:id="@+id/button_alarm"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="闹钟"/>
    <Button
        android:id="@+id/button_alarm_stop"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="停止闹钟"/>

</LinearLayout>

####MyReceiver extends BroadcastReceiver

public class Reciever extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context,"我收到了广播",Toast.LENGTH_SHORT).show();
        Log.d("TAG", "闹钟");
    }
}

####MainActivity

public class MainActivity extends Activity {
    private Button mButtonSend;
    private Reciever mReciever;
    private AlarmManager mAlarmManager;
    private Button mButtonAlarm;
    private Button mButtonStopAlarm;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mAlarmManager= (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        mReciever=new Reciever();
        IntentFilter filter=new IntentFilter();
        filter.addAction("com.lingzhuo");
        registerReceiver(mReciever,filter);//注册接收ID号
        mButtonSend= (Button) findViewById( R.id.button_send);
        mButtonSend.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent();
                intent.setAction("com.lingzhuo");
                sendBroadcast(intent);
            }
        });
        mButtonAlarm= (Button) findViewById(R.id.button_alarm);
        mButtonAlarm.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent1=new Intent();
                intent1.setAction("com.lingzhuo");
                PendingIntent pendingIntent=PendingIntent.getBroadcast(getApplicationContext(),0x23,intent1,PendingIntent.FLAG_UPDATE_CURRENT);
                mAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis()+3000,3000,pendingIntent);
                Log.d("TAG", "asdasdasdas");
            }
        });
        mButtonStopAlarm= (Button) findViewById(R.id.button_alarm_stop);
        mButtonStopAlarm.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent();
                intent.setAction("com.lingzhuo");
                PendingIntent pendingIntent=PendingIntent.getBroadcast(getApplicationContext(),0x23,intent,PendingIntent.FLAG_UPDATE_CURRENT);
                mAlarmManager.cancel(pendingIntent);
            }
        });

    }
//注册ID以后必须要销毁不然会报错
    @Override
    protected void onDestroy() {
        super.onDestroy();
        unregisterReceiver(mReciever);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值