我正在使用这个SmartLocation库。我可以使用下面的代码来停止活动中的服务。
SmartLocation.with(this).location().stop();
但是当我在服务中使用这个库时,我能够启动,但它不会停止,直到我关闭应用程序。还有一件事要注意的是,当我使用stopService()
.
OnDestroy()
也被称为
其余的服务代码在这里
public class locationService extends Service implements OnLocationUpdatedListener, OnActivityUpdatedListener
{
private LocationGooglePlayServicesProvider provider;
NotificationCompat.Builder builder;
NotificationManager notificationManager;
@Nullable
@Override
public IBinder onBind(Intent intent) {
return mBinder;
}
@Override
public boolean onUnbind(Intent intent) {
return super.onUnbind(intent);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
provider = new LocationGooglePlayServicesProvider();
provider.setCheckLocationSettings(true);
SmartLocation smartLocation = new SmartLocation.Builder(getApplicationContext()).logging(true).build();
smartLocation.location(provider).continuous().start(this);
smartLocation.activity().start(this);
return START_NOT_STICKY;
}
@Override
public void onCreate() {
super.onCreate();
}
@Override
public boolean stopService(Intent name) {
return super.stopService(name);
}
@Override
public void onDestroy() {
stop();
}
@Override
public void onLocationUpdated(Location location) {
double lat = location.getLatitude();
double lng = location.getLongitude();
}
@Override
public void onActivityUpdated(DetectedActivity detectedActivity) {
}
public void stop()
{
SmartLocation.with(this).location().stop();
stopForeground(true);
}
}
我正在使用活动识别而停止,因为我正在使用服务,它不工作。因此,我将smartlocation实例声明为全局然后像这样停止它smartLocation.location().stop();
下面是我修改的代码
public class locationService extends Service implements OnLocationUpdatedListener, OnActivityUpdatedListener
{
private LocationGooglePlayServicesProvider provider;
NotificationCompat.Builder builder;
NotificationManager notificationManager;
SmartLocation smartLocation;
@Nullable
@Override
public IBinder onBind(Intent intent) {
return mBinder;
}
@Override
public boolean onUnbind(Intent intent) {
return super.onUnbind(intent);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
provider = new LocationGooglePlayServicesProvider();
provider.setCheckLocationSettings(true);
smartLocation = new SmartLocation.Builder(getApplicationContext()).logging(true).build();
smartLocation.location(provider).continuous().start(this);
smartLocation.activity().start(this);
return START_NOT_STICKY;
}
@Override
public void onCreate() {
super.onCreate();
}
@Override
public boolean stopService(Intent name) {
return super.stopService(name);
}
@Override
public void onDestroy() {
stop();
}
@Override
public void onLocationUpdated(Location location) {
double lat = location.getLatitude();
double lng = location.getLongitude();
}
@Override
public void onActivityUpdated(DetectedActivity detectedActivity) {
}
public void stop()
{
smartLocation.location().stop();
stopForeground(true);
}
}