【发布时间】:2016-02-05 07:00:44
【问题描述】:
升级到最新版本的 Parse Android SDK 后,我的一些用户遇到了一个问题,即我们的应用显示黑屏,最终出现 ANR 并退出。我能够得到 anr traces.txt 并找到了这个:
"main" prio=5 tid=1 WAIT
| group="main" sCount=1 dsCount=0 obj=0x41c1dea0 self=0x41c09768
| sysTid=31669 nice=-11 sched=0/0 cgrp=apps handle=1074811220
| state=S schedstat=( 0 0 0 ) utm=130 stm=12 core=1
at java.lang.Object.wait(Native Method)
- waiting on <0x427b26a8> (a java.lang.Object)
at java.lang.Object.wait(Object.java:364)
at bolts.Task.waitForCompletion(Task.java:132)
at com.parse.ParseTaskUtils.wait(ParseTaskUtils.java:29)
at com.parse.ParseUser.getCurrentUser(ParseUser.java:906)
at com.parse.ParseUser.getCurrentUser(ParseUser.java:893)
at com.ourapp.activities.LauncherActivity.onCreate(LauncherActivity.java:38)
at android.app.Activity.performCreate(Activity.java:5458)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2376)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2470)
at android.app.ActivityThread.access$900(ActivityThread.java:174)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1307)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5593)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
at dalvik.system.NativeStart.main(Native Method)
这发生在调用:
ParseUser user = ParseUser.getCurrentUser(); 在 LauncherActivity 中。
这种情况仅发生在之前经过身份验证的用户以及应用程序关闭并重新启动之后。如果他们有全新安装(或清除数据),则不会发生。就操作系统版本和设备而言,它变化很大,但我每次都能使用运行 4.4.2 KitKat 的三星 Galaxy S4 Mini (GT-I9190) 和三星 Galaxy S4 (GT-I545) 重现它运行 4.4.2 KitKat。我已经看到用户从各种制造商以及棒棒糖前和棒棒糖后报告了这个问题。
有什么想法吗??
我已经在他们的 GitHub 上搜索了已知问题,甚至搜索了 Parse Discussion Google Group 都没有运气。 (此后我在该组中发布了同样的问题)
【问题讨论】:
-
fwiw - 跟踪是 bolts.Task.waitForCompletion 是阻塞的,并且它在主线程上......所以 -> anr......你可以用客户端和服务器的排列来解决问题吗?侧会话状态以及在“getCurrentUser()”范围内协调上述任何内容,即尝试可能重新创建错误的差异组合?
-
不幸的是,我也无法在这些设备上进行调试。调试过程可能由于 ANR 而无法附加。
标签: android parse-platform android-anr-dialog