2017-09-25 3 views
-1

Ich rufe Bilder hochladen api, in IntentService, die im Hintergrund läuft und laden Sie die Bilder auf den Server.Wie Bilder hochladen, auch wenn die App in Android getötet wird

IntentService, onHandleEvent Methode aufgerufen wird und im Hintergrund ausgeführt werden, was ich verstehe ist IntentService wird die Aufgabe ausführen und ruft stopSelf() Methode.

In meiner App, wenn das Hochladen ausgeführt wird, wenn ich meine App kille, wird der Upload beendet und IntentService wird beendet, nachdem die Upload-Aufgabe abgeschlossen wurde.

Wie kann ich meine IntentService laufen lassen, auch wenn die App getötet wird?

Edit 1: Ich habe versucht, Sticky-Dienst, wenn ich die app töten die Dienst an der onStartCommand Methode übergeben neu gestartet und Intent Daten null

+0

Verwenden Sie Sticky Service –

Antwort

0

du Code unten versuchen. Zunächst einmal müssen Sie Eigenschaften von Service im Manifest-Datei

<service 
     android:name=".service.Service" 
     android:enabled="true" 
     android:icon="@drawable/ic_launcher" 
     android:isolatedProcess="true"> 

    </service> 

Und auch hinzufügen START_STICKY in Ihrem Dienst hinzuzufügen.

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    return START_STICKY; 
} 
0

Sie können einen Dienst erstellen, wie in folgendem Schritt erwähnt, um den Dienst zu halten läuft die ganze Zeit

1) Im Dienst onStartCommand Methode Rückkehr START_STICKY.

public int onStartCommand(Intent intent, int flags, int startId) { 
return START_STICKY; 
} 

2) Starten Sie den Dienst im Hintergrund mit dem Start (MyService), so dass es immer unabhängig von der Anzahl der gebundenen Kunden aktiv bleibt.

Intent intent = new Intent(this, PowerMeterService.class); 
startService(intent); 

3) Erstellen Sie den Ordner.

public class MyBinder extends Binder { 
public MyService getService() { 
     return MyService.this; 
} 
} 

4) Definieren Sie eine Serviceverbindung.

private ServiceConnection m_serviceConnection = new ServiceConnection() { 
public void onServiceConnected(ComponentName className, IBinder service) { 
     m_service = ((MyService.MyBinder)service).getService(); 
} 

public void onServiceDisconnected(ComponentName className) { 
     m_service = null; 
} 
}; 

5) Verbinden Sie sich mit bindService mit dem Dienst.

Intent intent = new Intent(this, MyService.class); 
bindService(intent, m_serviceConnection, BIND_AUTO_CREATE); 
+0

Starten Sie Sticky, wird es senden Absichtsdaten zu Service, sobald ich die App kille? Wie wird der Dienst neu gestartet? – Praneeth

Verwandte Themen