##简介
注册分为静态注册和动态注册
静态注册是在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);
}
}