有时候,我开始了Activity我的应用程序,或者在快速切换Fragment的A S ViewPager是在特定的Activity,我有DeadObjectException这样的:
W/ActivityManager( 669): android.os.DeadObjectException
W/ActivityManager( 669): at android.os.BinderProxy.transact(Native Method)
W/ActivityManager( 669): at android.app.ApplicationThreadProxy.schedulePauseActivity(ApplicationThreadNative.java:660)
W/ActivityManager( 669): at com.android.server.am.ActivityStack.startPausingLocked(ActivityStack.java:776)
W/ActivityManager( 669): at com.android.server.am.ActivityStack.finishActivityLocked(ActivityStack.java:2501)
W/ActivityManager( 669): at com.android.server.am.ActivityStack.finishTopRunningActivityLocked(ActivityStack.java:2375)
W/ActivityManager( 669): at com.android.server.am.ActivityStackSupervisor.finishTopRunningActivityLocked(ActivityStackSupervisor.java:2040)
W/ActivityManager( 669): at com.android.server.am.ActivityManagerService.handleAppCrashLocked(ActivityManagerService.java:9667)
W/ActivityManager( 669): at com.android.server.am.ActivityManagerService.makeAppCrashingLocked(ActivityManagerService.java:9560)
W/ActivityManager( 669): at com.android.server.am.ActivityManagerService.crashApplication(ActivityManagerService.java:10205)
W/ActivityManager( 669): at com.android.server.am.ActivityManagerService.handleApplicationCrashInner(ActivityManagerService.java:9756)
W/ActivityManager( 669): at com.android.server.am.NativeCrashListener$NativeCrashReporter.run(NativeCrashListener.java:86
Run Code Online (Sandbox Code Playgroud)
和应用程序崩溃.我也有一些像这样的不寻常的日志:
F/libc (24088): Fatal signal 11 (SIGSEGV) at 0x00000020 (code=1), thread 24115 (Thread-1047)
I/DEBUG (23974): *** *** *** *** *** …Run Code Online (Sandbox Code Playgroud) 我看到在崩溃中报告了崩溃,其中有一个堆栈跟踪,没有提到我的应用程序代码.
我在com.google.android.gms中看到了DeadObjectException,并且在删除侦听器时触发了崩溃.
此外,每次我的应用程序启动时,我都会获得安装程序以进行日志记录,即
packageManager.getInstallerPackageName(my-package-name)
Run Code Online (Sandbox Code Playgroud)
此调用没有与回调相关联的回调.
主要在Lollipop和Kitkat上观察到崩溃,尽管很少有Marshmallow和Nougat用户也经历过崩溃.
有没有人经历类似的事情?
Fatal Exception: java.lang.RuntimeException: android.os.DeadObjectException
at android.app.ApplicationPackageManager.getPackageInstaller(ApplicationPackageManager.java:1632)
at com.google.android.gms.common.zze.zzl(Unknown Source)
at com.google.android.gms.common.GoogleApiAvailability.getInstance(Unknown Source:8000)
at com.google.android.gms.internal.zzpy.zzc(Unknown Source:24000)
at com.google.android.gms.internal.zzpv.begin(Unknown Source)
at com.google.android.gms.internal.zzqa.zzc(Unknown Source)
at com.google.android.gms.internal.zzpp.onConnectionSuspended(Unknown Source)
at com.google.android.gms.common.internal.zzk$1.onConnectionSuspended(Unknown Source)
at com.google.android.gms.common.internal.zzd$zzd.handleMessage(Unknown Source)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5438)
at java.lang.reflect.Method.invoke(Method.java)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)
Caused by android.os.DeadObjectException
at android.os.BinderProxy.transactNative(Binder.java)
at android.os.BinderProxy.transact(Binder.java:496)
at android.content.pm.IPackageManager$Stub$Proxy.getPackageInstaller(IPackageManager.java:4229)
at android.app.ApplicationPackageManager.getPackageInstaller(ApplicationPackageManager.java:1629)
at com.google.android.gms.common.zze.zzl(Unknown Source)
at com.google.android.gms.common.GoogleApiAvailability.getInstance(Unknown Source:8000)
at com.google.android.gms.internal.zzpy.zzc(Unknown Source:24000)
at com.google.android.gms.internal.zzpv.begin(Unknown Source)
at com.google.android.gms.internal.zzqa.zzc(Unknown …Run Code Online (Sandbox Code Playgroud) 在Android上,我们有一个包装来自GMS(Google移动服务)的LocationClient对象的类.(请注意,LocationClient实现了com.google.android.gms.common.GooglePlayServicesClient).
不幸的是,LocationClient对象习惯于抛出DeadObjectExceptions(例如当我们调用locationClient.getLastLocation()时),我们通过几种日志记录机制检测到它.然而,有点奇怪的是,LocationClient没有被记录为抛出DeadObjectExceptions,而且我只能捕获所说的DeadObjectExceptions大约1/40的时间o_0.我们没有这个问题的责备,我个人从未见过它,但它发生在我们的大量用户身上.
其他说明:
[a]什么是"引起:java.lang.IllegalStateException:android.os.DeadObjectException"这一行?这两种异常类型没有祖先 - 后代关系
[b]我发布到Android论坛,但当然他们拒绝我的帖子为"错误的论坛",并且没有GMS论坛所以我完全没有运气.
总而言之,问题是:GMS正在触发这个奇怪的无法捕获的异常,那么该怎么做呢?我该怎么办?
Here's a stack trace:
com.myapp.android.service.AsyncExecutionException
at com.myapp.android.service.AsyncService$ExceptionThrower.run(MyApp:120)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4794)
at java.lang.reflect.Method.invokeNative(Method.java)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
at dalvik.system.NativeStart.main(NativeStart.java)
Caused by: java.lang.IllegalStateException: android.os.DeadObjectException
at com.google.android.gms.internal.ey.getLastLocation()
at com.google.android.gms.internal.ez.getLastLocation()
at com.google.android.gms.location.LocationClient.getLastLocation()
***at com.myapp.GoogleLocationProvider.getLastLocation(MyApp:92)***
at com.myapp.LocationProducer.getLocation(MyApp:183)
at com.myapp.LocationProducer.getLocationHeader(MyApp:194)
at com.myapp.API.onExecute(MyApp:344)
...
at java.lang.Thread.run(Thread.java:856)
Caused by: android.os.DeadObjectException
at android.os.BinderProxy.transact(Binder.java)
at com.google.android.gms.internal.ex$a$a.a()
at com.google.android.gms.internal.ey.getLastLocation()
at com.google.android.gms.internal.ez.getLastLocation()
***at com.google.android.gms.location.LocationClient.getLastLocation()***
at com.myapp.GoogleLocationProvider.getLastLocation(MyApp:92)
at com.myapp.LocationProducer.getLocation(MyApp:183)
at com.myapp.LocationProducer.getLocationHeader(MyApp:194)
...
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
at java.util.concurrent.FutureTask.run(FutureTask.java:137) …Run Code Online (Sandbox Code Playgroud)