Android forhelp+orderBroadcast+课后习题无序广播 ch08广播机制
forhelp
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/stitch">
<Button
android:id="@+id/btn_help"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="50dp"
android:background="#FFD2D2"
android:padding="5dp"
android:text="发送求救广播"
android:textSize="20sp" />
</RelativeLayout>
MainActivity
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private MyBroadcastReceiver receiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
private void init(){
receiver = new MyBroadcastReceiver();
String action = "Help_Stitch";
IntentFilter intentFilter = new IntentFilter(action);
registerReceiver(receiver,intentFilter);
Button btn_help= (Button) findViewById(R.id.btn_help);
btn_help.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent();
intent.setAction("Help_Stitch");
sendBroadcast(intent);
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(receiver);
}
}
MyBroadcastReceiver
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.i("MyBroadcastReceiver", "自定义的广播接收者,接收到了求救广播事件");
Log.i("MyBroadcastReceiver", intent.getAction());
}
}
图片
![在这里插入图片描述](https://img-blog.csdnimg.cn/eeb6c5889329458d88169786edb96596.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bGx5rW35LiK5pyJ6aOO,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
orderBroadcast案例
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/stitch_one">
<Button
android:id="@+id/btn_send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="80dp"
android:background="#FBFBFF"
android:padding="5dp"
android:text="发送有序广播"
android:textSize="20sp" />
</RelativeLayout>
MainActivity
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
MyBroadcastReceiverOne one;
MyBroadcastReceiverTwo two;
MyBroadcastReceiverThree three;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
registerReceiver();
init();
}
private void registerReceiver(){
two = new MyBroadcastReceiverTwo();
IntentFilter filter2 = new IntentFilter();
filter2.setPriority(1000);
filter2.addAction("Intercept_Stitch");
registerReceiver(two,filter2);
one = new MyBroadcastReceiverOne();
IntentFilter filter1 = new IntentFilter();
filter1.setPriority(1000);
filter1.addAction("Intercept_Stitch");
registerReceiver(one,filter1);
three = new MyBroadcastReceiverThree();
IntentFilter filter3 = new IntentFilter();
filter3.setPriority(600);
filter3.addAction("Intercept_St itch");
registerReceiver(three,filter3);
}
private void init() {
Button btn_send= (Button) findViewById(R.id.btn_send);
btn_send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent();
intent.setAction("Intercept_Stitch");
MyBroadcastReceiverThree receiver = new MyBroadcastReceiverThree();
sendOrderedBroadcast(intent,null,receiver, null, 0, null, null);
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(one);
unregisterReceiver(two);
unregisterReceiver(three);
}
}
MyBroadcastReceiverOne
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
public class MyBroadcastReceiverOne extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.i("BroadcastReceiverOne", "自定义的广播接收者One,接收到了广播事件");
}
}
MyBroadcastReceiverThree
public class MyBroadcastReceiverThree extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.i("BroadcastReceiverThree", "自定义的广播接收者Three,接收到了广播事件");
}
}
MyBroadcastReceiverTwo
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
public class MyBroadcastReceiverTwo extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.i("BroadcastReceiverTwo", "自定义的广播接收者Two,接收到了广播事件");
abortBroadcast();
Log.i("BroadcastReceiverTwo","我是广播接收者Two,广播被我拦截了");
}
}
图片
![在这里插入图片描述](https://img-blog.csdnimg.cn/42340753cb9e41a6bd9e00f0dcc5be2d.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bGx5rW35LiK5pyJ6aOO,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
课后习题无序广播
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="发送广播" />
</RelativeLayout>
MainActivity
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
String action = "cn.itcast.unorder";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setAction(action);
sendBroadcast(intent);
}
});
MyBroadcastReceiver receiver = new MyBroadcastReceiver();
IntentFilter intentFilter = new IntentFilter(action);
registerReceiver(receiver,intentFilter);
}
public class MyBroadcastReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Log.i("MyBroadcastReceiver", "接受到了无序广播");
}
}
}
图片
![在这里插入图片描述](https://img-blog.csdnimg.cn/19b43886471c45a7ac2eeff53bd484b5.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bGx5rW35LiK5pyJ6aOO,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)