私はPackageStatsを使用していますが、PackageStatsのcodeSize、cacheSize、dataSizeを印刷すると一部のデータが負になります。Android PackageStatsは負の値を返します
いくつかの質問:
- どのようにこれは可能ですか?
- apkのサイズが約50MBであることを考慮して、codeSizeがマイナスになるケースは何ですか?
- 上記の情報を確実に抽出するために使用できる他の方法はありますか? Android用 また
は、Nそれは
- はそれがAndroidのNのために削除されたり、それを使用するためのいくつかの方法があり、 "ないNoSuchMethodException"。だから、私を与えますか?
- 上記のサイズを計算するのに役立つ代替手段はありますか?
コード:
PackageManager packageManager = context.getPackageManager();
Method myUserId = UserHandle.class.getDeclaredMethod("myUserId");
int userID = (Integer) myUserId.invoke(packageManager);
Method getPackageSizeInfo = packageManager.getClass().getDeclaredMethod("getPackageSizeInfo", String.class, int.class,
IPackageStatsObserver.class);
getPackageSizeInfo.invoke(packageManager, context.getPackageName(), userID, new IPackageStatsObserver.Stub() {
@Override
public void onGetStatsCompleted(PackageStats pStats, boolean succeeded) throws RemoteException {
long codeSize = pStats.codeSize/MB; //long MB = 1024*1024;
long cacheSize = pStats.cacheSize/MB;
long dataSize = pStats.dataSize/MB;
long appSize = codeSize + cacheSize + dataSize;
};
}
値を表示/確認する方法やその値に対して実行される計算を含むコード例を追加できますか? – Zachary
確認してください。私は1を除いて計算を実行していません。ここでは値を1024 * 1024で割り、値をMBで取得します。 – thepace