android - com.google.android.gms 出现 DeadObjectException

标签 android google-api

我在下面的日志中经常崩溃。它没有引用我的应用程序代码,但我猜它可能与 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.b.n(Unknown Source)
  at com.google.android.gms.common.api.b.a(Unknown Source)
  at com.google.android.gms.common.api.b$2.onConnectionSuspended(Unknown Source)
  at com.google.android.gms.internal.r.y(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$a.a(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);

最佳答案

这似乎与处理程序和消息传递有关...根据您的堆栈跟踪中的以下代码段,gms 正在查看 DeadObjectException当试图 process a 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)

如果它试图访问的消息属于一个已经退出/终止的进程,就会出现这个异常。对所有 handler sendMessage* message dispatch calls 进行代码搜索,通过你的代码。即使这样也可能无法捕获所有实例,因为某些 gms 调用可能会导致 handler 消息分派(dispatch)。

此外,检查您的任何后台服务或分配 handler 消息的 Activity 是否正在退出。 Android 可能正在摧毁它们 depending on life cycle states, try overriding onDestroy .

在您所有的 Activity/服务中,无论您在哪里调用gms api,检查您创建并传递给gms 的对象;如果它们死亡,这些对象将不再有效。

关于android - com.google.android.gms 出现 DeadObjectException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26104089/

相关文章:

android - 在Android中将px转换为dp和sp in/values/dimen.xml

Android:在不需要可怕的(用户)权限的情况下获取用户 ID?

android - 无需图形用户界面即可发送一条短信的简单应用程序

python - 使用 google.appengine.api.mail.send_mail 发送电子邮件时如何显示发件人姓名而不是电子邮件地址

android - Espresso 在 View 中卡住并带有循环动画

android - 使用 LiveData、协程和事务测试 Android Room

java - 是否可以使用 gmail API 代表用户发送邮件

javascript - 谷歌地图限制API

android - Youtube api键缓存搜索查询的json结果

google-api - 是否可以将 google 身份验证(即服务帐户)用于自定义 API?