use of com.yzy.supercleanmaster.adapter.SoftwareAdapter in project superCleanMaster by joyoyao.
the class SoftwareManageFragment method fillData.
private void fillData() {
if (position == 0) {
topText.setText("");
} else {
topText.setText("卸载下列软件,会影响正常使用");
}
task = new AsyncTask<Void, Integer, List<AppInfo>>() {
private int mAppCount = 0;
@Override
protected List<AppInfo> doInBackground(Void... params) {
PackageManager pm = mContext.getPackageManager();
List<PackageInfo> packInfos = pm.getInstalledPackages(0);
publishProgress(0, packInfos.size());
List<AppInfo> appinfos = new ArrayList<AppInfo>();
for (PackageInfo packInfo : packInfos) {
publishProgress(++mAppCount, packInfos.size());
final AppInfo appInfo = new AppInfo();
Drawable appIcon = packInfo.applicationInfo.loadIcon(pm);
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;
}
@Override
protected void onProgressUpdate(Integer... values) {
try {
mProgressBarText.setText(getString(R.string.scanning_m_of_n, values[0], values[1]));
} catch (Exception e) {
}
}
@Override
protected void onPreExecute() {
try {
showProgressBar(true);
mProgressBarText.setText(R.string.scanning);
} catch (Exception e) {
}
// loading.setVisibility(View.VISIBLE);
super.onPreExecute();
}
@Override
protected void onPostExecute(List<AppInfo> result) {
super.onPostExecute(result);
try {
showProgressBar(false);
userAppInfos = new ArrayList<>();
systemAppInfos = new ArrayList<>();
long allSize = 0;
for (AppInfo a : result) {
if (a.isUserApp()) {
allSize += a.getPkgSize();
userAppInfos.add(a);
} else {
systemAppInfos.add(a);
}
}
if (position == 0) {
topText.setText(getString(R.string.software_top_text, userAppInfos.size(), StorageUtil.convertStorage(allSize)));
mAutoStartAdapter = new SoftwareAdapter(mContext, userAppInfos);
listview.setAdapter(mAutoStartAdapter);
} else {
mAutoStartAdapter = new SoftwareAdapter(mContext, systemAppInfos);
listview.setAdapter(mAutoStartAdapter);
}
} catch (Exception e) {
}
}
};
task.execute();
}
Aggregations