gpt4 book ai didi

android - GetPackageInfo 导致 DeadObjectException

转载 作者:行者123 更新时间:2023-11-29 23:16:29 24 4
gpt4 key购买 nike

我有以下代码 fragment :

 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)

设备规范为三星操作系统 6。

在我的案例中,这似乎是一次罕见的崩溃。无论如何,是什么导致了这种情况的发生?我怎样才能防止它再次发生?

最佳答案

获取您自己的 versionName 的更好方法(我假设您正在尝试这样做,判断您的代码)是调用 BuildConfig.VERSION_NAME。这要求应用程序是使用 gradle 构建的,并且版本在您的 app.gradle 文件中定义。

对于 PackageManager 问题本身,我有一个理论,虽然只是轶事(从我对这个问题的评论中复制):

I ran into the same problem a while back. It seems when the IPC Communication from the PackageManager tries to send too much data it somehow dies. It will stay dead until your app restarts. The only "solution" I found is to limit the data provided from getPackageInfo with it's flags.

关于android - GetPackageInfo 导致 DeadObjectException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55263437/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com