2013-07-14 2 views
0

Мы получаем эту ошибку от клиентов в большом количестве после добавления достижений игровых сервисов Google Play наше приложение. Существует два типа трасс, последний из которых (вторая трасса ниже) начинается с android.app.Application.onLowMemory() на устройстве 4.0.4.java.lang.ClassCastException: com.google.android.gms.common.images.e не может быть передан в android.content.ComponentCallbacks

Я озадачен следом. Может ли google-play-services_lib регистрировать экземпляр com.google.android.gms.common.images.e (что бы это ни было), как если бы это был компонент ComponentCallbacks, тогда, когда приложение пытается вызвать метод в этом экземпляре, класс исключение cast исключено? Оба типа стеков, которые мы видели - из-за onConfigurationChanged() или onLowMemory() - это методы http://developer.android.com/reference/android/content/ComponentCallbacks.html

Кто-нибудь видел это исключение? Я получил это пару раз с момента добавления google-play-services_lib в наш проект (мы используем его для достижений). Это происходит, когда наше приложение неактивно, возможно, когда оно приостановлено (например, кнопка «Главная»), хотя, как только это произошло, когда USB был отключен от сети - по мере изменения конфигурации на пути, возможно, устройство переключало портрет/пейзаж во время обработки? Это не легко воспроизводится, поэтому я не уверен, что происходит.

16:05:35.587 DEBUG: onStop: disconnecting clients. lq 
(... 17 seconds elapse with no events related to the app) 
16:05:52.292 
java.lang.ClassCastException: com.google.android.gms.common.images.e cannot be cast to android.content.ComponentCallbacks 
    at android.app.Application.onConfigurationChanged(Application.java:91) 
    at android.app.ActivityThread.performConfigurationChanged(ActivityThread.java:3800) 
    at android.app.ActivityThread.handleConfigurationChanged(ActivityThread.java:3973) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1348) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:137) 
    at android.app.ActivityThread.main(ActivityThread.java:5041) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:511) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
    at dalvik.system.NativeStart.main(Native Method) 


18:00:46.230 WTF: errorNoNotify: Exception "main": java.lang.ClassCastException: com.google.android.gms.common.images.e cannot be cast to android.content.ComponentCallbacks android.app.Application.onLowMemory(Application.java:99) hm 
java.lang.ClassCastException: com.google.android.gms.common.images.e cannot be cast to android.content.ComponentCallbacks 
    at android.app.Application.onLowMemory(Application.java:99) 
    at android.app.ActivityThread.handleLowMemory(ActivityThread.java:3690) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1233) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:137) 
    at android.app.ActivityThread.main(ActivityThread.java:4424) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:511) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
    at dalvik.system.NativeStart.main(Native Method) 

ответ

0

Похоже, это ошибка в игровых сервисах Google Play ImageManager.

Мы использовали ImageManager loadImage() для загрузки изображений для разблокированных достижений. Поскольку класс, вызывающий исключение, находится в пакете ImageManager (android.gms.common.images), мы попробовали обновить приложение, чтобы прекратить использование ImageManager (переключается на использование файлов изображений APK). Ошибка остановилась, поэтому я думаю, что это причина

+0

Вы все еще разрешаете вращение устройства? Причина, по которой я спрашиваю, заключается в том, что я видел исключения класса исключения (в моих собственных фрагментах), когда я неправильно обрабатывал изменения ориентации). Ваша проблема отличается (но не отличается). – IanB

+0

@Sheldon Наши наборы действий android: screenOrientation = "sensorLandscape" android: configChanges = "orientation". Я не знаю, повлияют ли наши настройки активности на фрагмент сервиса gplay. Сбой, безусловно, остановился, когда мы перестали использовать ImageManager, вы бы подумали, что если gplay просто не справится с правильной ориентацией, это не было бы связано. Опять же, это странно. :) – mwk

Смежные вопросы