2016-02-03 35 views
1

在升級到最新版本的Parse Android SDK後,我的一些用戶遇到了應用程序顯示黑屏並最終顯示ANR並退出的問題。我能得到的ANR traces.txt,發現這樣的:在LauncherActivity解析Android SDK ParseUser.getCurrentUser()ANR

ParseUser user = ParseUser.getCurrentUser();

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

這發生在通話結束後。

這隻發生在先前經過身份驗證的用戶以及關閉並重新啓動應用程序之後。如果他們有全新的安裝(或清除數據),它不會發生。就操作系統版本和設備而言,它有很大的不同,但我可以每次使用運行4.4.2 KitKat的三星Galaxy S4 Mini(GT-I9190)以及三星Galaxy S4(GT-I545)進行重現,運行4.4.2 KitKat。雖然我看到用戶報告了各種製造商以及前棒棒糖和棒棒糖的問題。

任何想法??

我已經搜索了他們的GitHub的已知問題,甚至沒有運氣搜索Parse Discussion Google Group。 (我已經在該組中發佈了相同的問題)

+0

FWIW - 跟蹤的是,bolts.Task.waitForCompletion阻止其在主線程....所以 - > ANR ...你的猴子與客戶端和服務器端的會話狀態和任何的周圍排列進場調和上述「getCurrentUser()」的範圍,即嘗試可能重現錯誤差異連擊? –

+0

不幸的是,我還沒有能夠在這些設備上進行調試。大概是因爲ANR,調試過程不會被附加。 –

回答

0

發現此問題。我們有一個擴展ParseUser的自定義User類。我創建了一個名爲「isCurrentUser()」的方法,它也是ParseUser中包裝方法的名稱。 Lint相應地沒有看到問題,但當Parse去檢索當前用戶時,它在流程中調用isCurrentUser(),並且我創建的自定義方法將意外的值返回給SDK,然後對該對象產生永久鎖定在螺栓。瘋。你不會想到會SDK調用我的方法,因爲它是從延伸ParseUser一類,但它確實是因爲保存在用戶對象是相同的實例。