2014-07-04 8 views
13

jestem znalezieniem się, że około 1/5 z moich testów zamrażania, a po pewnym szukając problem mam zmniejszyła go do linii:ParseInstaller.getCurrentInstallation() saveInBackground() jest zamrażanie mój wniosek

ParseInstallation.getCurrentInstallation(). SaveInBackground();

Używam Parse 1.5.1 i urządzenia Android 4.4.2. Moja klasa aplikacji wygląda następująco:

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"); 
    } 
} 

Zachowanie na moim urządzeniu jest to, że po raz pierwszy zobaczyć pusty biały ekran przez około 5 sekund, a następnie ekran robi się czarny. Nie jestem pewien, jak długo ekran pozostaje czarny, jak zwykle jestem blisko. Pozwoliłem mu siedzieć przez około 10 minut bez żadnych zmian. Nie mogę nacisnąć przycisku Wstecz, a dotknięcie ekranu nic nie robi. Jestem zmuszony użyć mojego przycisku domowego, a następnie zmuszam aplikację do zamknięcia. Po ponownym otwarciu aplikacji zachowuje się i działa normalnie.

Dalsze badania doprowadziły mnie do znalezienia tego posta: https://www.parse.com/questions/android-saveinbackground-lock-the-main-thread

Ale nadal nie byłem w stanie znaleźć rozwiązanie. Jedna z sugestii w powyższym poście to po prostu przesunięcie lokalizacji tego kodu. Próbowałem tego do pewnego momentu po metodzie onCreate() mojej głównej działalności (nie mylić z metodą onCreate() aplikacji). Zachowanie zdawało się normalne, aż dotarłem do punktu, w którym wywołano kod getCurrentInstallation.saveInBackground(), w którym moja aplikacja zawiesiła się i nie odpowiedziała, dopóki nie wymusiłem jej zamknięcia.

Czy są jakieś rozwiązania tego problemu?

+0

Wielu moich użytkowników aplikacji zgłosiło ten sam problem (biały ekran lub czarny ekran). Podejrzewałem, że parsuję, ale tak naprawdę nie potwierdziłem. Ale czytając to, myślę, że to może być prawda. Ale problem został rozwiązany podczas ponownej instalacji lub przymusu zamknięcia (Nie jest to dobre rozwiązanie).Wierd. –

+0

Niestety, prośba użytkownika o przymus zamknięcia jest nie do przyjęcia. Ten błąd występuje w kilku różnych przypadkach. Świeża instalacja z Eclipse, świeża instalacja z pliku .apk i aktualizacja z bieżącej wersji sklepu Play. Wszystkie trzy doprowadziły do ​​tego samego problemu. Nie zdarza się to za każdym razem, ale często na tyle, by mieć zły wpływ. –

+0

Co powiesz na zapisanie go we własnym wątku? –

Odpowiedz

3

I napotkał ten sam problem, jak również przy użyciu Parse SDK 1.5.1.

Właśnie pobrałem najnowszy pakiet SDK 1.6.0 i problem został rozwiązany.

Link, aby pobrać najnowszy pakiet SDK.

+0

Mam nadzieję, że najnowsza wersja rozwiązuje problem. Nie miałem jeszcze okazji zaktualizować. Proponowana metoda umieszczenia wywołania saveInBackground() w AsyncTask zrobiła dla mnie taką sztuczkę do tej pory, ale dam jej szansę. –

1

Mam ten sam problem i więcej.

Pusty lub czarny ekran zdarza się jednak nie wszystkim moim testowym telefonom. Zdarza się tylko jednemu z nich (Android 2.3).

SaveEventually również nie działa na problematyczny telefon powyżej (wszystkie inne telefony, które mam działają bez zarzutu). Nie wysyła danych z powodzeniem na serwer. Podejrzewam więc, że problemem może być konfiguracja telefoniczna zapisywania danych w samym telefonie przed przekazaniem do serwera po ponownym włączeniu sieci.

2

Możesz śledzić zgłoszony problem tutaj: Parse installation save causing app freeze

już zapewnione środki (poufnie) ślady wątek zrzutu z mojej aplikacji. Jednak w momencie pisania tego posta nie ma pożytecznych informacji zwrotnych od Parse facetów.

Moja skromna opinia po spojrzeniu na ślady jest impasem powodującym ten problem po kłopotach z interakcją z serwerem. Ale to tylko zgadywanie.

link aktualizowane

+0

Wygląda na to, że wątek z raportem o błędach został zamknięty z powodu braku aktywności. –

+1

Tak, jednak można znaleźć dowody, że ten sam problem zgłaszany przez innych programistów również się kończy. Być może Parse nie rozpoznaje tego błędu jako istotnego lub po prostu zaprzecza jego istnieniu. Przykro mi z tego powodu. – faustcz

Powiązane problemy