java.lang.RuntimeException: Package manager has died

问题:

问题

报错信息:

java.lang.RuntimeException: Package manager has died

原因:

PackageInfo中数据量太大了,在部分手机上超出了Binder可传递的最大容量,进而导致PacakgeManager崩溃。

解决:

因为我只要用到versionName和versionCode两个信息,所以不需要activity等信息,能不能让PackageInfo的信息量小点。

getPackageInfo(String packageName, @PackageInfoFlags int flags)它的第二个参数flag,使得该方法返回的对象容量减小。
源码:

/**
 * Retrieve overall information about an application package that is
 * installed on the system.
 *
 * @param packageName The full name (i.e. com.google.apps.contacts) of the
 *         desired package.
 * @param flags Additional option flags. Use any combination of
 *         {@link #GET_ACTIVITIES}, {@link #GET_CONFIGURATIONS},
 *         {@link #GET_GIDS}, {@link #GET_INSTRUMENTATION},
 *         {@link #GET_INTENT_FILTERS}, {@link #GET_META_DATA},
 *         {@link #GET_PERMISSIONS}, {@link #GET_PROVIDERS},
 *         {@link #GET_RECEIVERS}, {@link #GET_SERVICES},
 *         {@link #GET_SHARED_LIBRARY_FILES}, {@link #GET_SIGNATURES},
 *         {@link #GET_URI_PERMISSION_PATTERNS}, {@link #GET_UNINSTALLED_PACKAGES},
 *         {@link #MATCH_DISABLED_COMPONENTS}, {@link #MATCH_DISABLED_UNTIL_USED_COMPONENTS},
 *         {@link #MATCH_UNINSTALLED_PACKAGES}
 *         to modify the data returned.
 *
 * @return A PackageInfo object containing information about the
 *         package. If flag {@code MATCH_UNINSTALLED_PACKAGES} is set and if the
 *         package is not found in the list of installed applications, the
 *         package information is retrieved from the list of uninstalled
 *         applications (which includes installed applications as well as
 *         applications with data directory i.e. applications which had been
 *         deleted with {@code DONT_DELETE_DATA} flag set).
 * @throws NameNotFoundException if a package with the given name cannot be
 *             found on the system.
 * @see #GET_ACTIVITIES
 * @see #GET_CONFIGURATIONS
 * @see #GET_GIDS
 * @see #GET_INSTRUMENTATION
 * @see #GET_INTENT_FILTERS
 * @see #GET_META_DATA
 * @see #GET_PERMISSIONS
 * @see #GET_PROVIDERS
 * @see #GET_RECEIVERS
 * @see #GET_SERVICES
 * @see #GET_SHARED_LIBRARY_FILES
 * @see #GET_SIGNATURES
 * @see #GET_URI_PERMISSION_PATTERNS
 * @see #MATCH_DISABLED_COMPONENTS
 * @see #MATCH_DISABLED_UNTIL_USED_COMPONENTS
 * @see #MATCH_UNINSTALLED_PACKAGES
 */
public abstract PackageInfo getPackageInfo(String packageName, @PackageInfoFlags int flags)
        throws NameNotFoundException;

使用GET_SIGNATURES,获取的数据量相对较小。

参考:http://www.jianshu.com/p/ddf194530bb6

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值