📜  如何在 Android 中使用 LocalBroadcastManager?

📅  最后修改于: 2022-05-13 01:54:27.818000             🧑  作者: Mango

如何在 Android 中使用 LocalBroadcastManager?

本地广播管理器是我们使用的大多数应用程序中最重要的功能之一。此功能通常在后台运行,我们看不到。当特定事件发生时,广播管理器会通知我们。例如,当我们订阅了 GeeksfoGeeks 上的任何课程时,当该课程有更新或竞赛时,我们会通过电子邮件收到有关该事件的通知。在那个地方,使用广播管理器通知用户关于特定事件的消息、邮件或任何其他格式。在本文中,我们将看看在我们的 Android 应用程序中使用这个广播管理器。

如何在 Android 中使用广播管理器?

要在我们的 Android 应用程序中使用 Broad Cast Manager,使用它的过程分为两种类型,首先我们必须注册我们的广播,然后从同一个广播接收更新。

第 1 步:注册广播

为了使用广播管理器执行特定操作,我们必须首先注册我们的广播,然后只有我们才能使用此广播来接收更新。有两种方法可以注册我们的广播,我们可以在我们的 Android Manifest 文件或我们想要接收其更新的 Activity 中注册它。

第 2 步:从广播接收更新



此步骤用于接收在应用程序中执行特定操作后我们将通过广播管理器发送的更新。为了接收更新,我们将使用 onRecieve() 方法来接收更新。

我们要建造什么?

我们将构建一个简单的应用程序,在该应用程序中,我们将通过单击按钮使用广播管理器发送数据。在下面的视频中,我们将看到我们将在本文中构建的内容。

广播管理器的逐步实现

第 1 步:创建一个新项目

要在 Android Studio 中创建新项目,请参阅如何在 Android Studio 中创建/启动新项目。请注意,选择Java作为编程语言。

步骤 2:使用 activity_main.xml 文件

导航到app > res > layout > activity_main.xml并将以下代码添加到该文件中。下面是activity_main.xml文件的代码。

XML


  
    
    
  
    
    


Java
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
  
import androidx.appcompat.app.AppCompatActivity;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
  
public class MainActivity extends AppCompatActivity {
      
    // creating a variable for 
    // our text view and button
    private TextView headingTV;
    private Button sendBroadCastBtn;
      
    // on below line we are creating a new broad cast manager.
    private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
        // we will receive data updates in onRecieve method.
        @Override
        public void onReceive(Context context, Intent intent) {
            // Get extra data included in the Intent
            String message = intent.getStringExtra("message");
            // on below line we are updating the data in our text view.
            headingTV.setText(message);
        }
    };
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
          
        // initializing our variables.
        headingTV = findViewById(R.id.idTVHeading);
        sendBroadCastBtn = findViewById(R.id.idBtnStartBroadCast);
          
        // on below line we are registering our local broadcast manager.
        LocalBroadcastManager.getInstance(this).registerReceiver(broadcastReceiver, new IntentFilter("custom-action-local-broadcast"));
          
        // on below line we are adding click listener to our button
        sendBroadCastBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // inside on click we are calling the intent with the action.
                Intent intent = new Intent("custom-action-local-broadcast");
                // on below line we are passing data to our broad cast receiver with key and value pair.
                intent.putExtra("message", "Welcome \n to \n Geeks For Geeks");
                // on below line we are sending our broad cast with intent using broad cast manager.
                LocalBroadcastManager.getInstance(MainActivity.this).sendBroadcast(intent);
            }
        });
    }
}


第 3 步:使用MainActivity。 Java文件

转到主活动。 Java文件,参考如下代码。下面是MainActivity的代码。 Java文件。代码中添加了注释以更详细地理解代码。

Java

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
  
import androidx.appcompat.app.AppCompatActivity;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
  
public class MainActivity extends AppCompatActivity {
      
    // creating a variable for 
    // our text view and button
    private TextView headingTV;
    private Button sendBroadCastBtn;
      
    // on below line we are creating a new broad cast manager.
    private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
        // we will receive data updates in onRecieve method.
        @Override
        public void onReceive(Context context, Intent intent) {
            // Get extra data included in the Intent
            String message = intent.getStringExtra("message");
            // on below line we are updating the data in our text view.
            headingTV.setText(message);
        }
    };
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
          
        // initializing our variables.
        headingTV = findViewById(R.id.idTVHeading);
        sendBroadCastBtn = findViewById(R.id.idBtnStartBroadCast);
          
        // on below line we are registering our local broadcast manager.
        LocalBroadcastManager.getInstance(this).registerReceiver(broadcastReceiver, new IntentFilter("custom-action-local-broadcast"));
          
        // on below line we are adding click listener to our button
        sendBroadCastBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // inside on click we are calling the intent with the action.
                Intent intent = new Intent("custom-action-local-broadcast");
                // on below line we are passing data to our broad cast receiver with key and value pair.
                intent.putExtra("message", "Welcome \n to \n Geeks For Geeks");
                // on below line we are sending our broad cast with intent using broad cast manager.
                LocalBroadcastManager.getInstance(MainActivity.this).sendBroadcast(intent);
            }
        });
    }
}

现在运行您的应用程序并查看应用程序的输出。

输出: