DeadObjectException с com.google.android.gms

Я часто сталкиваюсь с журналом ниже. Он не ссылается на мой код приложения, но я предполагаю, что он может иметь какое-то отношение к подключению / отключению GoogleApiClient. Кто-нибудь получает что-то подобное? Мне здесь ничего не удалось найти.

java.lang.IllegalStateException: android.os.DeadObjectException at com.google.android.gms.internal.ao.removeAllListeners(Unknown Source) at com.google.android.gms.internal.ap.disconnect(Unknown Source) at com.google.android.gms.common.api.bn(Unknown Source) at com.google.android.gms.common.api.ba(Unknown Source) at com.google.android.gms.common.api.b$2.onConnectionSuspended(Unknown Source) at com.google.android.gms.internal.ry(Unknown Source) at com.google.android.gms.internal.q$a.handleMessage(Unknown Source) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5102) 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:785) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) at dalvik.system.NativeStart.main(Native Method) Caused by: android.os.DeadObjectException at android.os.BinderProxy.transact(Native Method) at com.google.android.gms.internal.an$a$aa(Unknown Source) ... 15 more 

Возможно, там, где это происходит. Я добавил try / catch, чтобы поймать исключение

 mGApiClientMgr.addTask(mGApiClientMgr.new GoogleApiClientTask() { @Override public void run() { Log.d(LOG_TAG, "Refreshing data set."); Location location; try { location = LocationServices.FusedLocationApi.getLastLocation(getGoogleApiClient()); onLocationChanged(location); } catch(IllegalStateException ex) { // TODO } } }); 

Где addTask :

  private final LinkedBlockingQueue<GoogleApiClientTask> mTaskQueue = new LinkedBlockingQueue <GoogleApiClientTask>(); mTaskQueue.offer(task); 

Это, похоже, связано с обработчиками и передачей сообщений … На основании приведенного ниже фрагмента из вашей трассировки стека DeadObjectException видит DeadObjectException при попытке обработать message на петлере. Несмотря на то, что трассировка стека показывает связанные с gms , это может быть вызвано вашим кодом.

  at com.google.android.gms.internal.q$a.handleMessage(Unknown Source) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) 

Это исключение видно, если message к которому он пытается получить доступ, принадлежит процессу, который с тех пор вышел / убит. sendMessage* поиск кода для всех обработчиков sendMessage* сообщений sendMessage* через код. Даже это может не поймать все экземпляры, поскольку некоторые вызовы gms могут привести к отправке сообщений handler .

Кроме того, проверьте, не выходят ли какие-либо из ваших фоновых служб или действия, которые выделяют сообщения handler . Android может уничтожить их в зависимости от состояний жизненного цикла, попробуйте переопределить onDestroy .

Во всех ваших действиях / сервисах, где вы делаете вызовы gms api, проверяйте созданные объекты и переходите к gms ; Если они умрут, эти объекты уже недействительны.