Я немного запутался в поведении службы. Я создал класс службы, который отправляет мое местоположение по электронной почте, как только широта и долгота моего устройства меняются. Служба работает отлично, когда экран моего телефона включен, но как только экран телефона отключается, служба не обновляет меня для новых местоположений. Я где-то читал в SO о блокировке пробуждения. Я не знаю, как я могу реализовать блокировку пробуждения в своей службе, и даже я не знаю, это будет работать или нет. Пожалуйста, объясните мне, как я могу получить блокировку пробуждения в моем классе обслуживания. Код для моего класса обслуживания:
public class LocationUpdater extends Service {
private LocationManager lm;
private LocationListener locationListener;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Toast.makeText(getApplicationContext(), "Location updater started",Toast.LENGTH_LONG).show();
locationListener = new MyLocationListener();
lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
if (!lm.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0,0,
locationListener);
} else {
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,0, 0,
locationListener);
lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,0, 0,
locationListener);
}
return START_STICKY;
}
@Override
public void onDestroy() {
lm.removeUpdates(locationListener);
super.onDestroy();
}
@Override
public void onCreate() {
Toast.maketext(getApplicationContext,"Updater Serive Created",Toast.LENGTH_LONG).show;
}
private class MyLocationListener implements LocationListener {
@Override
public void onLocationChanged(Location loc) {
if (loc != null) {
String latitude=loc.getLatitude();
Striing longitude=loc.getLongitude();
emailMyLocation(latitude,longitude);
}
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
}
}
Это класс обслуживания, который обновляет местоположение моего устройства на мою электронную почту. Пожалуйста, скажите, как я могу заставить его работать, даже если экран выключен.
WAKE_LOCK
. - person Anggrayudi H   schedule 06.02.2015