2017-01-17 3 views
-1

Ich entwickle derzeit eine Cross-Plattform-Anwendung mit Phonegap und jetzt mache ich den nativen Teil des Jobs. Die App muss Ihre Position im Hintergrund geolokalisieren, und zwar perfekt, aber manchmal hat der Dienst angehalten und startet nicht neu (nicht immer nur manchmal, wenn ich in der U-Bahn bin oder nicht finde, wo ich bin) Ein In dieser Perspektive habe ich viel recherchiert und einige Sachen gefunden, aber es hat nicht geholfen: '( Natürlich, da mein Hintergrunddienst auf Android ist, habe ich das Flag START-STICKY hinzugefügt. Ich habe auch versucht, den Wert zu ändern von keepRunningAndroid und Phonegap, Hintergrund-Service von Geolocation hat aufgehört

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    super.onStartCommand(intent, flags, startId); 

    System.out.println(DateFormat.getTimeInstance(DateFormat.MEDIUM).format(new Date())+ " : " + "onStartCommand run"); 
    Log.d(TAG, "onStartCommand run"); 

    initialiseService(); 
    return START_STICKY; 
} 

PS: Sorry für mein schlechtes Englisch: me/ Wenn Sie mehr Informationen wünschen, fragen :)

+0

Überschreibung ontaskRemoved Verfahren zu schaffen. in diesem wieder Service starten –

+0

'onTaskRemoved' ist nicht Teil eines Service-Lebenszyklus, 'onDestroy' sollte verwendet werden – Ryan

Antwort

0

Was ist initialiseService tun? Erweitern Sie Service oder IntentService? Es kann sein, dass Ihre initialiseService blockiert und return START_STICKY nie zurückkehrt.

Wenn Ihre Aufgabe soll lange ausgeführt werden, sollten Sie Service verwenden und einen separaten Thread (oder AsyncTask) in onStartCommand

+0

private void initialiseService() { \t \t JSONObject tmp = initialiseLatestResult(); \t \t this.mServiceInitialized = true; } Wie Sie sehen können, initialisiert es das letzte JSON-Objekt, falls es nicht schon geschehen ist. In Bezug auf die Klasse, es ist von Service – Fabien

+0

erweitert Also habe ich versucht zu sehen, initialiseService() blockiert die Rückkehr von START_STICKY und es schien, dass es nicht das Problem war. In der Tat, wenn ich START_STICKY benutze, versuche den Dienst die meiste Zeit neu zu starten, aber manchmal höre ich einfach auf und versuche es nicht mehr. Jedenfalls habe ich versucht, START_STICKY durch ein anderes Flag START_REDELIVER_INTENT zu ändern, aber es fügte ein weiteres Problem hinzu: Ich erhalte keine Benachrichtigung von meinem Dienst: '( Ich denke, ich werde wieder START_STICKY setzen ^^ Was sollte der separate Thread, den Sie mir geraten haben hinzufügen ? – Fabien

Verwandte Themen