有没有办法知道是否启用了监听器?
LocationManager mlocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mlocListenerGPS);
现在听众接收到GPS更新并且GPS已开启。
调试时我可以看到mlocManager.mListeners,它是一个HashMap,第一个条目是我的监听器。
删除侦听器将清除列表。:
mlocManager.removeUpdates(mlocListenerGPS);
我需要一种方法来确定监听器是否处于活动状态或已被删除。
我需要像
这样的东西boolean enabled = mlocManager.mListeners.size() > 0; // assuming I only use one listener
任何想法(除了在开关上使用标志)?
答案 0 :(得分:1)
让您的倾听者作为一项服务工作。现在使用以下方法检查您的服务是否正在运行。
private boolean isMyServiceRunning() {
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if (MyService.class.getName().equals(service.service.getClassName())) {
return true;
}
}
return false;
}
答案 1 :(得分:-1)
让我建议另一种方法。
您可以:
,而不是检查LocationListener是否正在运行创建一个名为LocationListener
的{{1}}类或您想要的任何名称。
使用以下命令激活服务LocalLocationListener
方法中的LocationListener
:
this.mLocalLocationListener = new LocalLocationListener(this);
在服务的onStartCommand
方法中,停止onDestroy()
课程:
mLocationManager.removeUpdates(this.mLocalLocationListener);
最后,提供一个首选项选项,允许您的用户选择更新从LocationListener
类返回的信息的频率。这是一项重要功能,可让您的用户节省电池电量:
mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,mlocListenerGPS);
会消耗大量电力,因为它不断要求提供信息 GPS提供商。读 here 了解更多信息。