私はGPS
サービスを作成し、定期的な位置更新を読み取りました。以前は、GPS
がしばらくしてスリープモードに入っていて、その後の場所の更新がなかったという問題がありました。AndroidサービスでGPSがスリープモードに入っています
今や私はコードを変更して、定期的にGPS
位置更新を登録解除して登録しました。これにより、GPS
がスリープモードに入るという私の問題は解決されますが、新しい問題が作成されます。つまり、
私のサービスはしばらくすると終了します。私はこれの理由を確認することができません。助けてください。
ここあなたは文句を言わない、何度も何度も/登録解除位置更新リスナーを登録する必要がありますいくつかのコードが
@Override
public void onCreate() {
super.onCreate();
timer.schedule(checkLocationListener, new Date(), 1000 * 60 * 15);
}
private TimerTask checkLocationListener = new TimerTask() {
@Override
public void run() {
handler.post(new Runnable() {
public void run() {
lm.removeUpdates(LocationService.this);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, CommonConstants.GPS_POLL,
CommonConstants.GPS_MIN_DIST, LocationService.this);
}
});
}
};
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.d(LocationService.class.getSimpleName(), "Start");
valueMap.put(CommonConstants.STATUS, CommonConstants.STATUS_DROP);
trackMe();
new Thread() {
public void run() {
while (true) {
try {
String url = DeviceConfig.getMessage();
if (url == null) {
Thread.sleep(60000);
continue;
}
HttpRequester.getServerResponse(url, null);
DeviceConfig.addValue(CommonConstants.SERVER_UPD, "" + System.currentTimeMillis());
DeviceConfig.removeMessage();
} catch (Exception e) {
Log.e(LocationService.class.getSimpleName(), "Error", e);
}
}
}
}.start();
return (START_NOT_STICKY);
}
private void trackMe() {
lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, CommonConstants.GPS_POLL, CommonConstants.GPS_MIN_DIST,
this);
DeviceConfig.addValue(CommonConstants.GPS_STATE, lm.isProviderEnabled(LocationManager.GPS_PROVIDER)
? CommonConstants.ON : CommonConstants.OFF);
}
こんにちはpramod、何かがあなたのために働いたか??? – viv
ホームボタンを押してもこれが発生しています......... – viv