BroadcastReceiver实现LocationListener:如何在onLocationChanged中获取上下文

时间:2014-01-07 16:45:28

标签: android broadcastreceiver android-context locationlistener

我的问题很简单:我有一个BroadcastReceiver来实现LocationListenerLocationListener需要通常未实现的方法,而且这些方法不在onReceive的{​​{1}}之内,因此我没有使用上下文。问题在于BroadcastReceiver方法(其中一个onLocationChanged未实现的方法)我必须调用一个必须使用上下文的方法,而我不知道如何获取它。

LocationListener

我该如何做到这一点?

2 个答案:

答案 0 :(得分:2)

您可以声明类级别上下文,如下所示,然后使用它。

public class MyBroadcastReceiver extends BroadcastReceiver实现了LocationListener     {

private Context context; 
@Override
public void onReceive(Context context, Intent intent) {
this.conext = context;
}

public void onLocationChanged(Location location) {
    method(context);       // Now you can use context
}
public void onStatusChanged(String s, int i, Bundle b) {           
}
public void onProviderDisabled(String s) {
}
public void onProviderEnabled(String s) {           
}

答案 1 :(得分:2)

  

我有一个实现LocationListener的BroadcastReceiver。

如果通过清单注册了此BroadcastReceiver,将其设为LocationListener毫无意义,因为您的进程可以在onReceive()返回后的毫秒内终止。

  

我必须调用一个方法必须使用上下文,我不知道如何获取它

如果您使用registerReceiver()设置此BroadcastReceiver,并且出于某种原因,您也可以将其设为LocationListener,那么您的ContextregisterReceiver()无论是什么叫ActivityService或{{1}})。