所以我在Play商店有这个应用程序,这可以帮助人们清理他们的手机,我得到了一些错误消息,当人们点击“干净”按钮时,应用程序崩溃,并且因为outofmemoryerror。 这是错误消息:

java.lang.RuntimeException: An error occurred while executing doInBackground()

at android.os.AsyncTask$3.done(AsyncTask.java:309)

at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)

at java.util.concurrent.FutureTask.setException(FutureTask.java:223)

at java.util.concurrent.FutureTask.run(FutureTask.java:242)

at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)

at java.lang.Thread.run(Thread.java:818)

Caused by: java.lang.OutOfMemoryError: Failed to allocate a 147468 byte allocation with 24512 free bytes and 23KB until OOM

at dalvik.system.VMRuntime.newNonMovableArray(Native Method)

at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)

at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:856)

at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:675)

at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:2228)

at android.content.res.Resources.loadDrawableForCookie(Resources.java:4215)

at android.content.res.Resources.loadDrawable(Resources.java:4089)

at android.content.res.Resources.getDrawable(Resources.java:2005)

at android.content.res.Resources.getDrawable(Resources.java:1987)

at android.app.ApplicationPackageManager.getDrawable(ApplicationPackageManager.java:977)

at android.app.ApplicationPackageManager.loadUnbadgedItemIcon(ApplicationPackageManager.java:2842)

at android.app.ApplicationPackageManager.loadItemIcon(ApplicationPackageManager.java:2774)

at android.content.pm.PackageItemInfo.loadIcon(PackageItemInfo.java:220)

at android.content.pm.PackageItemInfo.loadIcon(PackageItemInfo.java:206)

at panda.cleaner.cleaner_batterysaver.fragment.SoftwareManageFragment$1.doInBackground(SoftwareManageFragment.java:139)

at panda.cleaner.cleaner_batterysaver.fragment.SoftwareManageFragment$1.doInBackground(SoftwareManageFragment.java:127)

at android.os.AsyncTask$2.call(AsyncTask.java:295)

at java.util.concurrent.FutureTask.run(FutureTask.java:237)

以下是错误来自的类:

task = new AsyncTask>() {

private int mAppCount = 0;//(SoftwareManageFragment.java:127)

@Override

protected List doInBackground(Void... params) {

PackageManager pm = mContext.getPackageManager();

List packInfos = pm.getInstalledPackages(0);

publishProgress(0, packInfos.size());

List appinfos = new ArrayList();

for (PackageInfo packInfo : packInfos) {

publishProgress(++mAppCount, packInfos.size());

final AppInfo appInfo = new AppInfo();

Drawable appIcon = packInfo.applicationInfo.loadIcon(pm);//(SoftwareManageFragment.java:139)

appInfo.setAppIcon(appIcon);

int flags = packInfo.applicationInfo.flags;

int uid = packInfo.applicationInfo.uid;

appInfo.setUid(uid);

if ((flags & ApplicationInfo.FLAG_SYSTEM) != 0) {

appInfo.setUserApp(false);//系统应用

} else {

appInfo.setUserApp(true);//用户应用

}

if ((flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0) {

appInfo.setInRom(false);

} else {

appInfo.setInRom(true);

}

String appName = packInfo.applicationInfo.loadLabel(pm).toString();

appInfo.setAppName(appName);

String packname = packInfo.packageName;

appInfo.setPackname(packname);

String version = packInfo.versionName;

appInfo.setVersion(version);

try {

mGetPackageSizeInfoMethod.invoke(mContext.getPackageManager(), new Object[]{

packname,

new IPackageStatsObserver.Stub() {

@Override

public void onGetStatsCompleted(PackageStats pStats, boolean succeeded) throws RemoteException {

synchronized (appInfo) {

appInfo.setPkgSize(pStats.cacheSize + pStats.codeSize + pStats.dataSize);

}

}

}

});

} catch (Exception e) {

}

appinfos.add(appInfo);

}

return appinfos;

}

由于我只是一名初级开发人员,我不确定问题可能是什么。 发现此错误的特定手机使用的是Android 6.0.Help会很受欢迎。 非常感谢提前。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐