Я нахожу, что около 1/5 моих тестов замерзают, и после некоторого поиска проблемы я сузил ее до строки:
ParseInstallation.getCurrentInstallation() saveInBackground();.
Я использую Parse 1.5.1 и Android 4.4.2. Мой класс приложения выглядит следующим образом:
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");
}
}
Поведение на моем устройстве заключается в том, что я сначала увижу пустой белый экран в течение примерно 5 секунд, а затем экран станет черным. Я не уверен, как долго экран остается черным, как я обычно заставляю близко. Я позволил ему сидеть около 10 минут один раз без изменений. Я не могу нажать кнопку "Назад", и любое касание на экране ничего не делает. Я вынужден использовать мою домашнюю кнопку, а затем принудительно закрыть приложение. При повторном открытии приложения он ведет себя и функционирует нормально.
Дальнейшие исследования заставили меня найти этот пост: https://www.parse.com/info/android-saveinbackground-lock-the-main-thread
Но все же я не смог найти решение. Одним из предложений в вышеприведенном сообщении является просто перемещение местоположения этого кода. Я пробовал это до некоторого момента после моего основного метода onCreate() (не путать с приложением onCreate()). Поведение оказалось нормальным до тех пор, пока я не дошел до того момента, когда вызывается код getCurrentInstallation.saveInBackground(), где мое приложение застыло и не смогло ответить, пока я не закрою его.
Есть ли какие-либо решения этой проблемы?