2017-04-14 2 views
0

Meine Android-App verwendet einen Dienst, der momentan ausgelöst wird, wenn die App geöffnet wird (und der Dienst gerade nicht ausgeführt wird) oder wenn das Gerät neu gestartet wird.Neustart eines Dienstes beim App-Update vom Playstore

Als ich das erste Update bei Google Play veröffentlichte, bemerkte ich, dass bei der Aktualisierung der App von Google auf einem Gerät die Funktionen der App über meinen Dienst funktionieren funktioniert, bis ich die App einmal öffne oder neu starte Gerät.

Ich stelle daher eine Nachricht auf Google Play und frage alle meine derzeitigen Benutzer, die diese Funktionen verwenden, um die App wieder zu öffnen, damit die Funktionen wieder funktionieren.

Jetzt plane ich ein weiteres Update für meine App zu veröffentlichen, aber dieses Mal, ich möchte irgendwie entweder den Dienst machen beharren auf App-UpdateoderNeustart der Dienst auf App-Updateohne zu zwingen Benutzeraktion, damit bestehende Benutzer keine Probleme bei der Verwendung meiner App haben.

Alle Lösungen mit/ohne Code würden geschätzt.

+0

Der PackageManager sendet Broadcasts für App-Updates. Insbesondere kann mit 'android.intent.action.MY_PACKAGE_REPLACED' Intent Broadcast eine Benachrichtigung erhalten werden, wenn Ihre App aktualisiert wird. Sie können diese Übertragung von Ihrem Dienst/Ihrer App empfangen und Ihren Dienst auf dieser Grundlage neu starten. https://developer.android.com/reference/android/content/Intent.html#ACTION_MY_PACKAGE_REPLACED – iVoid

+0

http://stackoverflow.com/questions/30727953/android-app-update-broadcast. –

Antwort

0

Als Benutzer iVoid Kommentare können Sie für die android.intent.action.MY_PACKAGE_REPLACED Absicht hören. Erstellen Sie eine BroadcastReceiver und achten Sie darauf, dass Sie darauf hören.

In Ihrem AndroidManifest.xml Sie erklären ein BroadcastReceiver

<receiver android:name=".MyReceiver"> 
    <intent-filter> 
     <action android:name="android.intent.action.MY_PACKAGE_REPLACED"/> 
    </intent-filter> 
</receiver> 

Und in Ihrem MyReceiver Klasse können Sie tun, was Sie tun wollen, wie zum Beispiel Ihren Dienst neu zu starten.

public class MyReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     ... 
    } 
} 
Verwandte Themen