registerReceiver() 和 sendBroadCast() 调用 BroadCast 接收器的主要区别是什么?
Major difference between registerReceiver() and sendBroadCast() to call the BroadCast Receivers?
当我使用广播接收器时,我对 sendBroadcast 和 registerReciever 等方法有点困惑。两者给出相同的结果,工作功能也相同。但是,与两者合作背后的原因是什么?
例如,如果我尝试获取电池电量的结果,我使用的编码类似于
public void onButtonClick(View view)
{
IntentFilter intentFilter=new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
BraodcastReceiver br=new BroadcastReceiver();
registerReceiver(br,intentFilter);
}
或
public void onButtonClick(View view)
{
Intent intent=new Intent(Intent.ACTION_BATTERY_CHANGED);
sendBroadcast(intent);
}
这两种方法有什么区别?他们将如何工作?能不能给个理由?
我的广播接收器class:
public class MyBroadcastClass extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
int level= intent.getIntExtra(BatteryManager.EXTRA_LEVEL,0);
Log.d("BatteryLevel",level);
}
}
首先你要明白什么是android中的broadcast receiver。
稍后我会解释。
第一个例子,顾名思义就是注册。因此,在注册了一个特定的广播之后,它会监听任何带有 ACTION 的广播,你用 intentFilter 提供了它。作用同回调机制
第二个例子是发送广播。发送广播意味着你广播了一些东西,比如电池变化(OS 级别),它将以 ACTION 广播。
SO 发送广播将使用 Action 发送一些数据,如果我们使用 Action 收听广播然后它将在 BroadcastRecicver class
我建议您阅读开发者文档 https://developer.android.com/reference/android/content/BroadcastReceiver.html
你会明白的。
来回答你的问题
registerReceiver()
用于将您的广播接收器注册到特定操作,例如 - Intent.ACTION_BATTERY_CHANGED
或者您可以定义自己的。
这意味着每当任何应用程序将向此操作发送广播(使用 sendBroadcast()
方法发送)时,您的广播接收器 onReceive()
方法将被调用。
当我使用广播接收器时,我对 sendBroadcast 和 registerReciever 等方法有点困惑。两者给出相同的结果,工作功能也相同。但是,与两者合作背后的原因是什么?
例如,如果我尝试获取电池电量的结果,我使用的编码类似于
public void onButtonClick(View view)
{
IntentFilter intentFilter=new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
BraodcastReceiver br=new BroadcastReceiver();
registerReceiver(br,intentFilter);
}
或
public void onButtonClick(View view)
{
Intent intent=new Intent(Intent.ACTION_BATTERY_CHANGED);
sendBroadcast(intent);
}
这两种方法有什么区别?他们将如何工作?能不能给个理由?
我的广播接收器class:
public class MyBroadcastClass extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
int level= intent.getIntExtra(BatteryManager.EXTRA_LEVEL,0);
Log.d("BatteryLevel",level);
}
}
首先你要明白什么是android中的broadcast receiver。
稍后我会解释。
第一个例子,顾名思义就是注册。因此,在注册了一个特定的广播之后,它会监听任何带有 ACTION 的广播,你用 intentFilter 提供了它。作用同回调机制
第二个例子是发送广播。发送广播意味着你广播了一些东西,比如电池变化(OS 级别),它将以 ACTION 广播。
SO 发送广播将使用 Action 发送一些数据,如果我们使用 Action 收听广播然后它将在 BroadcastRecicver class
我建议您阅读开发者文档 https://developer.android.com/reference/android/content/BroadcastReceiver.html
你会明白的。
来回答你的问题
registerReceiver()
用于将您的广播接收器注册到特定操作,例如 - Intent.ACTION_BATTERY_CHANGED
或者您可以定义自己的。
这意味着每当任何应用程序将向此操作发送广播(使用 sendBroadcast()
方法发送)时,您的广播接收器 onReceive()
方法将被调用。