PackageManager#GET_META_DATA 标志是否有助于减少 getInstalledApplications() 方法的大小?

问题描述 投票:0回答:1

在我的应用程序中,我使用以下方法来获取系统中安装的应用程序列表。

packageManager.getInstalledPackages(0);

因此有时会出现以下异常-

AndroidRuntime: java.lang.RuntimeException: android.os.TransactionTooLargeException: data parcel size 526696 bytes

为了避免这种情况,我修改了代码如下,

List<ApplicationInfo> applicationInfoList = packageManager.getInstalledApplications(PackageManager.GET_META_DATA);

请您帮助理解以下几点?

  • 使用 getInstalledApplications() 而不是 getInstalledPackages() 是否有助于减少接收到的大小?
  • PackageManager.GET_META_DATA 标志在这里过滤什么? Android 文档中的定义对我来说不太清楚——“与此组件关联的附加元数据。只有在请求信息时设置 PackageManager#GET_META_DATA 标志时,才会填写此字段。”
android android-package-managers
1个回答
0
投票

我猜测这些问题源于 你之前的问题,我将其标记为这个 10 年前的问题的重复项。

使用 getInstalledApplications() 而不是 getInstalledPackages() 是否有助于减少接收到的大小?

应用程序的数量应该少于软件包,因为“软件包”可能包含一些不符合“应用程序”资格的预安装项目。这可能不会产生很大的差异,但可能会有所帮助。

PackageManager.GET_META_DATA 标志在这里过滤什么?

getInstalledApplications()
的上下文中,包含
GET_META_DATA
将返回这些应用程序清单中
<meta-data>
元素内的任何
<application>
元素的详细信息。除非您需要此信息,否则我建议不要包含此标志。

更一般地说,您需要确定您想要实现的目标是什么,然后确定最佳的

PackageManager
方法,以返回最少的信息来实现您的目标。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.