PackageManager 死了 - DeadObjectException - 小包裹上的交易失败

pro*_*m85 5 android android-package-managers

我有一个非常简单的功能,如下所示:

public static boolean isAppInstalled(String packageName) {
    PackageManager pm = MainApp.get().getPackageManager();
    try {
        pm.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES);
        return true;
    } catch (PackageManager.NameNotFoundException e) {
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

有时这会在getPackageInfo具有以下堆栈跟踪的行上崩溃:

java.lang.RuntimeException: Package manager has died
    at android.app.ApplicationPackageManager.getPackageInfo(ApplicationPackageManager.java:151)
    ... code in my app => getPackageInfo line above ...
Caused by: android.os.DeadObjectException: Transaction failed on small parcel; remote process probably died
    at android.os.BinderProxy.transactNative(Native Method)
    at android.os.BinderProxy.transact(Binder.java:505)
    at android.content.pm.IPackageManager$Stub$Proxy.getPackageInfo(IPackageManager.java:2151)
    at android.app.ApplicationPackageManager.getPackageInfo(ApplicationPackageManager.java:145)
    ...
Run Code Online (Sandbox Code Playgroud)

任何想法为什么会发生这种情况?我认为这样的事情只有在同时安装/卸载应用程序时才会发生,但我有一个用户可以重复这个并且总是得到这个例外。

小智 0

之后重新设置您的手机;

  1. 清洁工程
  2. 重建项目
  3. 编译工程