2016-05-10 15 views
0

Ich versuche, dieses Problem zu lösen, indem ich diesen Code, der unten gezeigt wird, erstelle. Aber ich bekomme kein Ergebnis. Kann jemand helfen, diese Frage zu beantworten?Wie starte ich den Intent-Service, wenn die App gelöscht oder zerstört wird?

-In Geofence Triggering Transition Benachrichtigung nicht erhalten, während die App getötet. -Eintritt Exit Notification funktioniert ordnungsgemäß Wenn App im Hintergrund ist, aber nach dem Kill die Anwendungsbenachrichtigung nicht ordnungsgemäß funktioniert.

public void onDestroy() 
{ 
    super.onDestroy(); 
    if(GpsService.mTimer != null) 
    { 
     startService(new Intent(context, GpsService.class)); 
    } 
    Log.e(TAG, "onDestroy"); 
} 
+0

Nicht sicher, wie es funktionieren würde, da der Kontext zerstört wird. Versuchen Sie, 'getApplicationContext()' statt –

+0

Versuchen Sie dieses http://stackoverflow.com/questions/35973536/android-not-able-to-add-geofence-from-service/35979567#35979567, es funktioniert gut für mich –

+0

"während die App getötet" Was meinst du damit? –

Antwort

0
public void onDestroy() 
{ 
    super.onDestroy(); 
    if(GpsService.mTimer != null) 
    { 
     startService(new Intent(context, GpsService.class)); 
    } 
    Log.e(TAG, "onDestroy"); 
} 

Dies wird zuerst Ihre Aktivität zerstören und dann wird Ihr Zustand überprüft werden. Welche nutzlose Sache ist .Sie diese versuchen kann

public void onDestroy() 
     { 
      if(GpsService.mTimer != null) 
      { 
       startService(new Intent(context, GpsService.class)); 
      } 
      Log.e(TAG, "onDestroy"); 
       super.onDestroy(); 

     } 

`

1

Von Ihrem Service des onStartCommand() zurückkehren START_STICKY. In diesem Fall wird (im Idealfall) der Dienst neu gestartet, auch wenn die App "getötet" wird.

(Wenn START_STICKY funktioniert, muss der Dienst nicht von onDestroy gestartet werden. Android kümmert sich darum).

Allerdings, in einigen Hersteller Telefon, wenn Sie die App von Recent Task-Liste löschen, es "Force Kills" die App. In diesem Fall wird der Dienst nicht neu gestartet und Sie können nicht viel tun.