我有一个非常简单的功能,如下所示:
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;
}
}
有时这会在具有以下堆栈跟踪的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)
...
为什么会发生这种情况?我以为这样的事情只有在同时安装/卸载应用程序的情况下才会发生,但是我有一个用户可以重复此操作并始终得到此异常。
答案 0 :(得分:0)
此后销毁您的手机;