Android local broadcast

Local broadcast and global broadcast (according to the scope of transmission)
Local broadcast ( app internal transmission ) data, other apps cannot receive it, ensuring data security
Global broadcast can spread communication between all apps in the entire mobile phone, and there will be security issues . Ordinary broadcasts are global broadcasts by default.
For example, monitor power on, charge, call, send text messages, modify time, etc.

1. Local broadcast can only be registered dynamically
2. Local broadcast needs to use LoaalBroadcasrManager
Code example:
xml file:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
    tools:context=".broadcast.local.LocalBroadCastActivity">

    <Button
        android:id="@+id/btn_local"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:onClick="sendLocalBroadcast"
        android:text="本地广播">

    </Button>
</androidx.constraintlayout.widget.ConstraintLayout>

java code:
local broadcast class: MyLocalBroadcastReceiver

public class MyLocalBroadcastReceiver extends BroadcastReceiver {
    private static final String TAG = "MyLocalBroadcastReceiver";

    @Override
    public void onReceive(Context context, Intent intent) {

        Log.d(TAG, "onReceive: 收到了本地广播");
    }
}

Activity类:LocalBroadCastActivity

public class LocalBroadCastActivity extends AppCompatActivity {

    private MyLocalBroadcastReceiver myLocalBroadcastReceiver = new MyLocalBroadcastReceiver();
    LocalBroadcastManager mLocalBroadcastManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_local_broad_cast);

        /**
         * 本地广播只能动态注册
         */
        //实例化
        mLocalBroadcastManager = LocalBroadcastManager.getInstance(this);
        //注册广播接收器
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction("local_broad_cast");
        mLocalBroadcastManager.registerReceiver(myLocalBroadcastReceiver, intentFilter);
    }

    //发送本地广播
    public void sendLocalBroadcast(View view) {
        Intent intent = new Intent();
        intent.setAction("local_broad_cast");
        mLocalBroadcastManager.sendBroadcast(intent);
    }

    //解除注册
    @Override
    protected void onDestroy() {
        super.onDestroy();
        mLocalBroadcastManager.unregisterReceiver(myLocalBroadcastReceiver);
    }
}

Guess you like

Origin blog.csdn.net/ShiXinXin_Harbour/article/details/127643212