【发布时间】:2019-03-20 14:40:21
【问题描述】:
我有以下代码sn-p:
public static String getAppVersion(Context context) {
String versionName = null;
try {
versionName = context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionName; //This is the problematic line
} catch (NameNotFoundException e) {
e.printStackTrace();
}
return versionName;
}
现在根据 Crashlytics 的说法,当应用程序崩溃时出现以下异常:
Caused by android.os.DeadObjectException
com.tawkon.data.lib.util.ParameterUtils.getAppVersion
android.os.BinderProxy.transactNative (Binder.java)
android.os.BinderProxy.transact (Binder.java:503)
android.content.pm.IPackageManager$Stub$Proxy.getPackageInfo (IPackageManager.java:2684)
android.app.ApplicationPackageManager.getPackageInfo (ApplicationPackageManager.java:193)
com.tawkon.data.lib.util.ParameterUtils.getAppVersion (ParameterUtils.java:44)
com.tawkon.data.lib.helper.analytics.NetworkRequestHelper.generateHttpRequest (NetworkRequestHelper.java:28)
com.tawkon.data.lib.service.DataThroughputScanJobIntentService$2.onTestFinished (DataThroughputScanJobIntentService.java:342)
com.tawkon.data.lib.collector.DataThroughputManager$1.run (DataThroughputManager.java:171)
设备规格为搭载 OS 6 的三星。
在我的情况下,这似乎是一个罕见的崩溃。无论如何,什么可能导致这种情况发生?我怎样才能防止它再次发生?
【问题讨论】:
-
"是什么导致了这种情况发生?" -- 在操作系统进程中发生了崩溃。 “我怎样才能防止它再次发生?” -- 我怀疑这是可能的。
-
不久前我遇到了同样的问题。似乎当来自 PackageManager 的 IPC 通信尝试发送太多数据时,它会以某种方式死亡。在您的应用重新启动之前,它将一直处于死状态。我发现的唯一“解决方案”是使用它的标志来限制
getPackageInfo提供的数据。
标签: android deadobjectexception