Java 安装后可以限制应用程序大小吗?
在测试设备上安装应用程序后,应用程序的大小会随着我每天的使用而增加。但是我想限制我的应用程序大小,比如说100mb。意味着当应用程序大小达到100 mb时,新数据必须覆盖旧数据,即应用程序大小无论如何不得超过100 mb。我们可以在安装后限制应用程序大小吗?-否 应用程序大小是影响应用程序安装和卸载指标的最大因素之一,因此定期监控并了解如何减少应用程序的下载和安装大小非常重要。由于这两种尺寸是相关的,因此它们之间的区别如下:Java 安装后可以限制应用程序大小吗?,java,android,performance,Java,Android,Performance,在测试设备上安装应用程序后,应用程序的大小会随着我每天的使用而增加。但是我想限制我的应用程序大小,比如说100mb。意味着当应用程序大小达到100 mb时,新数据必须覆盖旧数据,即应用程序大小无论如何不得超过100 mb。我们可以在安装后限制应用程序大小吗?-否 应用程序大小是影响应用程序安装和卸载指标的最大因素之一,因此定期监控并了解如何减少应用程序的下载和安装大小非常重要。由于这两种尺寸是相关的,因此它们之间的区别如下: 下载大小:用户在谷歌上下载的应用程序的大小 玩当一个应用程序有较大的
- 下载大小:用户在谷歌上下载的应用程序的大小 玩当一个应用程序有较大的下载量时,它需要更长的时间来下载 下载
- 设备上的大小(安装时):安装所需的空间量 安装你的应用程序。由于应用程序在下载时会被压缩, 它可以使安装大小大于下载大小。当一个应用程序 安装尺寸越大,用户设备上需要的空间就越大 完成安装。应用程序打开后,其大小将显示在磁盘上 根据应用程序的使用情况而有所不同
- 下载大小:用户在谷歌上下载的应用程序的大小 玩当一个应用程序有较大的下载量时,它需要更长的时间来下载 下载
- 设备上的大小(安装时):安装所需的空间量 安装你的应用程序。由于应用程序在下载时会被压缩, 它可以使安装大小大于下载大小。当一个应用程序 安装尺寸越大,用户设备上需要的空间就越大 完成安装。应用程序打开后,其大小将显示在磁盘上 根据应用程序的使用情况而有所不同
)() 在Android Studio中使用名为Android大小分析器的插件 Android Size Analyzer工具是识别和实施许多缩小应用程序大小的策略的简单方法。它既可以作为Android Studio插件使用,也可以作为独立的JAR使用
)() 这是可能的,尽管会有点困难,因为你必须同时做两件事:
org.reflection
API和PackageManager
在运行时通过几行代码获得它:
PackageManager pm = getPackageManager();
Method getPackageSizeInfo = pm.getClass().getMethod("getPackageSizeInfo", String.class, IPackageStatsObserver.class);
getPackageSizeInfo.invoke(pm, "com.android.mms", new IPackageStatsObserver.Stub() {
@Override
public void onGetStatsCompleted(PackageStats pStats, boolean succeeded)
throws RemoteException {
Log.i(TAG, "Size of the installed app: " + pStats.codeSize);
}
});
这将是您希望在安装后立即运行的代码,并保存该值,因为稍后您将使用它与您拥有的其他缓存相结合来计算磁盘上的大小
其次,每次您要持久化某些内容时—无论是使用SharedReferences
、数据库(SQLite
)还是保存到文件,您都必须计算保存的数据字节数,并计算保存的数据和安装后的应用程序大小之和
此外,我建议提高精度的最佳方法是将所有内容保存到文件中,并避免使用数据库和共享引用
,因为获得准确的文件大小更容易且一致。由于您的文件大小+安装后的应用程序大小>100mb,您可以告诉用户,他无法保存更多数据,必须释放一些空间,等等
我希望你有这个想法。这是可能的,尽管这会有点困难,因为你必须同时做两件事:
org.reflection
API和PackageManager
在运行时通过几行代码获得它:
PackageManager pm = getPackageManager();
Method getPackageSizeInfo = pm.getClass().getMethod("getPackageSizeInfo", String.class, IPackageStatsObserver.class);
getPackageSizeInfo.invoke(pm, "com.android.mms", new IPackageStatsObserver.Stub() {
@Override
public void onGetStatsCompleted(PackageStats pStats, boolean succeeded)
throws RemoteException {
Log.i(TAG, "Size of the installed app: " + pStats.codeSize);
}
});
这将是您希望在安装后立即运行的代码,并保存该值,因为稍后您将使用它与您拥有的其他缓存相结合来计算磁盘上的大小
其次,每次您要持久化某些内容时—无论是使用SharedReferences
、数据库(SQLite
)还是保存到文件,您都必须计算保存的数据字节数,并计算保存的数据和安装后的应用程序大小之和
此外,我建议提高精度的最佳方法是将所有内容保存到文件中,并避免使用数据库和共享引用
,因为获得准确的文件大小更容易且一致。由于您的文件大小+安装后的应用程序大小>100mb,您可以告诉用户,他无法保存更多数据,必须释放一些空间,等等
我希望你能想到这一点。看到这一点,你只能在写入数据时手动检查当前大小,并选择是否需要在写入新数据之前删除一些数据。你的意思是应用程序总大小增加(apk+缓存+数据