Java “方法”是如何实现的;getSystemService";是否直接用于广播接收机?

Java “方法”是如何实现的;getSystemService";是否直接用于广播接收机?,java,android,android-intent,android-activity,android-broadcast,Java,Android,Android Intent,Android Activity,Android Broadcast,我遇到了这个问题:getSystemService在Context类中定义,所以我假设在Context.getSystemService时调用它。我无法理解以下代码,其中在BroadcastReceiver中直接调用了getSystemService。我运行代码,没有错误显示 代码: public class MainActivity extends Activity { …… class NetworkChangeReceiver extends BroadcastReceiver

我遇到了这个问题:
getSystemService
Context
类中定义,所以我假设在
Context.getSystemService
时调用它。我无法理解以下代码,其中在
BroadcastReceiver
中直接调用了
getSystemService
。我运行代码,没有错误显示

代码:

 public class MainActivity extends Activity {
    ……
 class NetworkChangeReceiver extends BroadcastReceiver {
    @Override
  public void onReceive(Context context, Intent intent) {
    ConnectivityManager connectionManager = (ConnectivityManager)
    getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo networkInfo = connectionManager.getActiveNetworkInfo();
    if (networkInfo != null && networkInfo.isAvailable()) 
    {
    Toast.makeText(context, "network is available",
    Toast.LENGTH_SHORT).show();
    } else {
    Toast.makeText(context, "network is unavailable",
    Toast.LENGTH_SHORT).show();
    }
   }
 }
}

因为您的
networkchangerecever
MainActivity
的一个内部类
您正在使用活动上下文。
尝试在新文件(不是子类)中使用NetworkChangeReceiver,您将看到发生了什么

MainActivity。此
虽然指的是您自己的类,它扩展了Activity类,但基类(Activity)也扩展了Context类,因此它可以用于提供Activity上下文。

getSystemService()
上下文的一部分。您需要使用在
onReceive()
方法中接收的
Context

@Override
public void onReceive(Context context, Intent i) {
    UsbManager manager = (UsbManager) context.getSystemService(Context.USB_SERVICE);
}

在本例中,在BroadcastReceiver(内部类)中调用getSystemService。因此,默认情况下,getSystemService表示this.getSystemService。“这”不是指网络接收器吗?我对“上下文”有点困惑,对不起that@SamuelChan将
networkchangerecever
更改为
static
类,您将看到。。。