我发现大约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/questions/android-saveinbackground-lock-the-main-thread
但是,我仍然无法找到解决方案。上述帖子中的一个建议是简单地移动此代码的位置。在我的主要活动onCreate()方法之后,我已经尝试了这一点(不要与应用程序的onCreate()方法混淆)。行为似乎是正常的,直到我达到调用getCurrentInstallation.saveInBackground()代码的位置,我的应用程序冻结并且无法响应,直到我强制关闭它。
这个问题有解决方案吗?
答案 0 :(得分:3)
答案 1 :(得分:2)
您可以在此处跟踪报告的问题: Parse installation save causing app freeze
我已经从我的应用程序提供(机密地)线程转储跟踪。然而,在写这篇文章的时候,Parse家伙没有任何有用的反馈。
在查看跟踪之后,我的拙见是在服务器交互出现问题后导致此问题的僵局。但它只是在猜测。
更新了链接
答案 2 :(得分:1)
我确实遇到了同样的问题。
然而,空白或黑屏不会发生在我的所有测试手机上。它只发生在其中一个(Android 2.3)。
SaveEventually也不适用于上面有问题的手机(我所有其他手机都正常工作)。它不会成功将数据发送到服务器。因此我怀疑在网络重新启动时传递到服务器之前在手机上保存数据的电话配置可能是问题。