What is broadcasting:
Broadcasting is one of the four major components of Android. The full name is BroadcastReceiver.
Broadcasting is divided into receivers and senders. Even if there is no receiver, the sender will send data.
It can realize data communication across multiple pages.
It can realize data communication across processes.
Static registration out-of-order broadcast:
Realization effect: realize data communication between two software
1. Create a new custom class to inherit BroadcastReceiver and override onReceive()
public class MyBroadcastReceiver extends BroadcastReceiver {
private String TAG = "MyBroadcastReceiver";
@Override
public void onReceive(Context context, Intent intent) {
//Toast支付宝
Toast.makeText(context,"支付宝",Toast.LENGTH_SHORT).show();
Log.e(TAG, "onReceive: "+"支付宝在此" );
}
}
2. Modify the registration in the Manifest
//添加receive标签
<receiver android:name=".entity.MyBroadcastReceiver">
//添加启动方式
<intent-filter >
//添加action标签,启动时只有相同的action才能启动广播
<action android:name="zhifubao"></action>
</intent-filter>
</receiver>
send broadcast in another software
public class MainActivity extends AppCompatActivity {
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = findViewById(R.id.send_broadcast);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//创建intent对象,传入action
Intent intent = new Intent("zhifubao");
//发送广播
sendBroadcast(intent);
//sendOrderedBroadcast(intent,null);
}
});
}
}
over
Dynamically register out-of-order broadcasts:
Realization effect: realize the data communication between the two software, the effect is the same, no pictures are loaded, but the dynamic registration broadcast, the two processes are running, the communication can be realized.
That is, the information registered in Manifest is implemented using Java code, and no modification is made elsewhere.
public class MainActivity extends AppCompatActivity {
private IntentFilter intentFilter;
private MyBroadcastReceiver myBroadcastReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//创建intentFilter对象,用于添加action
intentFilter = new IntentFilter();
intentFilter.addAction("zhifubao");
//intentFilter.setPriority(1000);
//创建MyBroadcastReceiver的对象
myBroadcastReceiver = new MyBroadcastReceiver();
//注册广播
registerReceiver(myBroadcastReceiver, intentFilter);
}
@Override
protected void onDestroy() {
super.onDestroy();
//注销注册
unregisterReceiver(myBroadcastReceiver);
}
}
over
Static registration ordered broadcast:
Achieved effect: Toast Alipay and Meituan successively
1. One more step than registering static unordered broadcast: Add priority attribute to Manifest, set priority, -1000-1000 priority gradually becomes larger
<receiver android:name=".entity.MyBroadcastReceiver">
//添加启动方式
<intent-filter android:priority="1000">
//添加action标签,启动时只有相同的action才能启动广播
<action android:name="zhifubao"></action>
</intent-filter>
</receiver>
2. Create a new project and copy the above code, but priority=”-1000”, also implement the broadcast function, the Toast value is Meituan
over
Dynamic registration of ordered broadcasts
The effect is the same as static registration
Code
The information registered in the Manifest is implemented using Java code
public class MainActivity extends AppCompatActivity {
private IntentFilter intentFilter;
private MyBroadcastReceiver myBroadcastReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//创建intentFilter对象,用于添加action
intentFilter = new IntentFilter();
intentFilter.addAction("zhifubao");
//设置优先级
intentFilter.setPriority(1000);
//创建MyBroadcastReceiver的对象
myBroadcastReceiver = new MyBroadcastReceiver();
//注册广播
registerReceiver(myBroadcastReceiver, intentFilter);
}
@Override
protected void onDestroy() {
super.onDestroy();
//注销注册
unregisterReceiver(myBroadcastReceiver);
}
}