2014-07-04 6 views
13

ich zu finden bin, dass etwa 1/5 meiner Tests frieren, und nach einigem Suchen für das Problem, das ich es verengt auf die Linie nach unten:ParseInstaller.getCurrentInstallation() saveInBackground() ist das Einfrieren meiner Anwendung

ParseInstallation.getCurrentInstallation(). SaveInBackground();

Ich verwende Parse 1.5.1 und ein Android 4.4.2-Gerät. Meine Anwendungsklasse wie folgt aussieht:

public class InitApplication extends Application { 

@Override 
    public void onCreate() { 
     super.onCreate(); 
     Parse.initialize(this, "my_App_ID", "my_Client_Key"); 
     PushService.setDefaultPushCallback(this, MainActivity.class); 
     System.out.println("execution DOES reach here"); 
     ParseInstallation.getCurrentInstallation().saveInBackground(); 
    System.out.println("execution DOES NOT reach here"); 
    } 
} 

Das Verhalten auf meinem Gerät ist, dass ich zum ersten Mal mit einem leeren weißen Bildschirm für etwa 5 Sekunden lang sehen, und dann wird der Bildschirm schwarz. Ich bin mir nicht sicher, wie lange der Bildschirm schwarz bleibt, da ich normalerweise nah dran bin. Ich habe es für etwa 10 Minuten einmal ohne Veränderung sitzen lassen. Ich kann die Zurück-Taste nicht drücken und jede Berührung auf dem Bildschirm tut nichts. Ich bin gezwungen, meine Home-Taste zu verwenden, und zwinge dann die Anwendung zum Schließen. Beim erneuten Öffnen der Anwendung verhält es sich und funktioniert normal.

Weitere Forschungen führten mich diesen Beitrag zu finden: https://www.parse.com/questions/android-saveinbackground-lock-the-main-thread

Aber noch habe ich es nicht gelungen, eine Lösung zu finden. Ein Vorschlag in dem obigen Beitrag ist es, einfach die Position dieses Codes zu verschieben. Ich habe dies zu einem gewissen Zeitpunkt nach der onCreate() - Methode meiner Hauptaktivität versucht (nicht zu verwechseln mit der onCreate() -Methode der Anwendung). Das Verhalten schien normal zu sein, bis ich an den Punkt kam, an dem der getCurrentInstallation.saveInBackground() Code aufgerufen wurde, wo meine Anwendung einfror und nicht reagierte, bis ich sie geschlossen hatte.

Gibt es Lösungen für dieses Problem?

+0

Viele meiner App-Benutzer berichteten das gleiche Problem (weißer Bildschirm oder schwarzer Bildschirm). Ich vermutete Pars, aber bestätigte es nicht wirklich. Aber wenn ich das lese, denke ich, dass es wahr sein könnte. Aber das Problem wurde bei der Neuinstallation gelöst oder zwangsweise geschlossen (keine gute Lösung).Sonderbar. –

+0

Leider ist es nicht akzeptabel, den Benutzer zum Schließen zu zwingen. Dieser Fehler tritt in mehreren verschiedenen Fällen auf. Neuinstallation von Eclipse, Neuinstallation aus der .apk-Datei und Aktualisierung von der aktuellen Play Store-Version. Alle drei haben zu demselben Thema geführt. Es passiert nicht jedes Mal, aber oft genug, um eine schlechte Wirkung zu haben. –

+0

Wie wäre es, es in Ihrem eigenen 'Thread' zu speichern? –

Antwort

3

ich das gleiche Problem gestoßen und 1.5.1 Parse SDK.

Und ich habe gerade das neueste SDK 1.6.0 heruntergeladen und Problem gelöst.

Link, um das neueste SDK herunterzuladen.

+0

Hoffentlich löst die neueste Version das Problem. Ich hatte noch keine Gelegenheit zu aktualisieren. Die vorgeschlagene Methode, den Aufruf saveInBackground() in eine AsyncTask zu bringen, hat mir bisher den Trick gebracht, aber ich werde es versuchen. –

1

Ich habe das gleiche Problem und mehr.

Der leere oder schwarze Bildschirm passiert jedoch nicht alle meine Testtelefone. Es passiert nur einer von ihnen (Android 2.3).

SaveEventuell funktioniert auch nicht auf das problematische Telefon oben (alle anderen Telefone, die ich habe, funktionieren gut). Es sendet keine Daten erfolgreich an den Server. Ich vermute also, dass die Telefonkonfiguration des Speicherns von Daten auf dem Telefon selbst vor dem Weitergeben an den Server, wenn das Netzwerk wieder eingeschaltet ist, das Problem sein kann.

2

Sie können hier berichtet Ausgabe verfolgen: Parse installation save causing app freeze

ich bereits vorgesehen (vertraulich) Thread-Dump Spuren von meiner App. Zum Zeitpunkt des Schreibens dieses Beitrags gibt es jedoch kein nützliches Feedback von Parse-Typen.

Meine bescheidene Meinung nach dem Aufspüren von Spuren ist ein Deadlock, der dieses Problem nach einigen Problemen mit der Serverinteraktion verursacht. Aber es ist nur raten.

Link- aktualisiert

+0

Es sieht so aus, als ob dieser Fehlerbericht-Thread wegen Inaktivität geschlossen wurde. –

+1

Ja, Sie können jedoch Hinweise darauf finden, dass dasselbe Problem von anderen Entwicklern gemeldet wird. Vielleicht erkennt Parse diesen Fehler nicht als wichtig an oder leugnet einfach seine Existenz. Das tut mir leid. – faustcz

Verwandte Themen