【发布时间】:2013-02-25 12:03:45
【问题描述】:
我想做这样的事情:
当我的应用程序启动时,我想启动一个服务来检查我的位置
当应用程序进入后台时,我想停止服务
我有两个主要问题:
如何检测我的应用程序进入后台?我有几个活动,我在 MainActivity 中尝试了覆盖 onPause,但是当我开始其他活动时也会调用 onPause。
这个问题更重要:我的服务应该如何检查我的位置?我尝试了几种方法,但都没有成功。
我的服务看起来像这样,但它不起作用。我应该改变什么才能让它工作?
package com.pivoscore.service;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.os.IBinder;
public class LocationService extends Service {
private LocationListener locationListener;
@Override
public IBinder onBind(final Intent intent) {
return null;
}
@Override
public int onStartCommand(final Intent intent, final int flags, final int startId) {
super.onStartCommand(intent, flags, startId);
return Service.START_STICKY;
}
@Override
public void onCreate() {
super.onCreate();
final LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
this.locationListener = new MyLocationListener();
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 100, 0, this.locationListener);
}
private static class MyLocationListener implements LocationListener {
@Override
public void onLocationChanged(final Location location) {
}
@Override
public void onProviderDisabled(final String provider) {
}
@Override
public void onProviderEnabled(final String provider) {
}
@Override
public void onStatusChanged(final String provider, final int status, final Bundle extras) {
}
}
}
【问题讨论】:
-
onResume() 方法,让服务搜索Location Information 和onPause() 方法移除Location。
-
我想在几个活动中使用我的位置,而不仅仅是在主要活动中。所以在 onPause 中停止服务是不明智的,因为如果有其他活动出现在前面,onPause 将被调用,我将停止获取位置更新。
-
android.permission.ACCESS_COARSE_LOCATION android.permission.ACCESS_FINE_LOCATION android.permission.ACCESS_NETWORK_STATE 你有没有在你的清单文件中添加这些权限?
标签: android location android-service