Code: Select all
...
...
< /code>
Und ich habe sie in meiner Hauptaktivität dynamisch angefordert. Ich habe meinen Dienst mit < /p>
deklariert
< /code>
In meiner Aktivität beginne ich meinen Vordergrunddienst mit < /p>
startForegroundService(i);
< /code>
und in der Methode des Dienstes onStartCommand () verwende ich < /p>
ServiceCompat.startForeground(this, notification_id, serviceNotification, FOREGROUND_SERVICE_TYPE_LOCATION);
< /code>
Der Dienst startet normal und die von mir erstellte Benachrichtigung wird wie beabsichtigt veröffentlicht. Im Service's OnCreate () habe ich sowohl die Rückrufmethoden für Sensoren als auch Standortänderung verzeichnet.SensorManager sm = (SensorManager) getSystemService(SENSOR_SERVICE);
sm.registerListener(this, accelSensor, SensorManager.SENSOR_DELAY_UI);
sm.registerListener(this, rotationVectorSensor, SensorManager.SENSOR_DELAY_UI);
...
LocationManager lm = (LocationManager) getSystemService(LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 50, 5.f, this);
< /code>
Ich habe festgestellt, dass, wenn ich meine App mit dem Bildschirm verwendete, aber mit etwas, das das Gerät funktioniert hat (z.PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "myService::ServiceWakeLockTAG");
wakeLock.acquire();
...
< /code>
, den ich später in der OnDestroy-Methode des Dienstes veröffentlichen < /p>
...
wakeLock.release();