2017-12-27 14 views
-2

START_STICKY nicht funktionieren in meinem Gerät, wenn ich meine App dann then Service nicht neu starten, Mein Gerätename ist Redmi Note 3 Pro, aber immer wenn ich die gleiche App in Android-Emulator ausführen, es der Dienst neu gestartet wird, wenn ich die App und Service töten nicht aufhört, bis ich es durch Stopservice() -MethodeService Stop ist immer wenn App getötet wird

bitte helfen sie mir wegbleiben

Problem

Gelöst

Geschehen so:

Einstellung> Berechtigungen> Autostart dann drehte auf dem Switch meiner App und Fertig!

Ich habe Lösung in diesem Link: Solution Link

+0

Verwenden Sie "ServiceConnection" und Service-Bindung für den Service ohne zu zerstören –

+0

@HemanthSTobi ok werde es versuchen, danke für die Hilfe, obwohl es zu schätzen –

Antwort

1

Bei einigen Geräten (insbesondere Xiaomi, Huawei, Lenovo) müssen Sie Ihre App hinzufügen zu einer Liste von "geschützten Apps" oder "Apps, die im Hintergrund laufen dürfen". Wenn Ihre App nicht in der Liste enthalten ist, startet Android Ihren Service NICHT automatisch neu, selbst wenn Sie START_STICKY von onStartCommand() zurückgegeben haben. Dies ist eine "Energiesparfunktion", die den Entwicklern leider viele Probleme bereitet!

Suchen Sie in den Android-Einstellungen unter Energieverwaltung, Sicherheit oder Apps für diese Einstellungen. auch

Siehe:

Bitte auch erklären, was Sie "töten meine app" bedeuten. Wenn Sie die App schließen, wird Service NICHT von Android neu gestartet. Dies ist beabsichtigt und wird auch nicht auf dem Emulator neu gestartet, wenn Sie das Schließen der App erzwingen.

+1

Danke Mann es funktioniert Ich habe Autostart aktiviert durch ** Einstellung> Berechtigungen> Autostart ** Ich habe eine Lösung in diesem Link: [Lösungslink] (https://stackoverflow.com/a/39269523/8362967) –

0

-Code können Sie in HourlyService Klasse helfen onStartCommand Methode gibt START_STICKY

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

Innere Aktivität

private HourlyService mHourlyService; 
private ServiceConnection mServiceConnection = new ServiceConnection() { 
    @Override 
    public void onServiceConnected(ComponentName componentName, IBinder iBinder) { 
     // We've bound to LocalService, cast the IBinder and get LocalService instance 
     LocalBinder binder = (LocalBinder) iBinder; 
     mHourlyService = binder.getService(); 
     mBound = true; 
    } 

    @Override 
    public void onServiceDisconnected(ComponentName componentName) { 
     mBound = false; 
    } 
}; 

@Override 
protected void onStart() { 
    super.onStart(); 
    // Bind to LocalService 
    Intent intent = new Intent(this, HourlyService.class); 
    bindService(intent, mServiceConnection, Context.BIND_AUTO_CREATE); 
} 

@Override 
protected void onStop() { 
    super.onStop(); 
    unbindService(mServiceConnection); 
    mBound = false; 
} 
Verwandte Themen