Restore old invalidations after apk installs/uninstalls. Do not refresh the same app multiple times.

This commit is contained in:
Daniel Martí 2013-07-08 11:21:36 +02:00
parent f5785c3de0
commit 3ce8cbf5bd
3 changed files with 11 additions and 4 deletions

View File

@ -706,15 +706,17 @@ public class AppDetails extends ListActivity {
Uri uri = Uri.fromParts("package", pkginfo.packageName, null);
Intent intent = new Intent(Intent.ACTION_DELETE, uri);
startActivityForResult(intent, REQUEST_UNINSTALL);
((FDroidApp) getApplication()).invalidateApp(id);
}
private void installApk(File file) {
private void installApk(File file, String id) {
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse("file://" + file.getPath()),
"application/vnd.android.package-archive");
startActivityForResult(intent, REQUEST_INSTALL);
((FDroidApp) getApplication()).invalidateApp(id);
}
private void launchApk(String id) {
@ -751,8 +753,10 @@ public class AppDetails extends ListActivity {
private Downloader download;
private ProgressDialog pd;
private boolean updating;
private String id;
public DownloadHandler(DB.Apk apk, String repoaddress) {
id = apk.id;
download = new Downloader(apk, repoaddress);
download.start();
startUpdates();
@ -790,7 +794,7 @@ public class AppDetails extends ListActivity {
case DONE:
if (pd != null)
pd.dismiss();
installApk(download.localFile());
installApk(download.localFile(), id);
finished = true;
break;
case CANCELLED:

View File

@ -800,7 +800,9 @@ public class DB {
List<PackageInfo> installedPackages = mContext.getPackageManager()
.getInstalledPackages(0);
long startTime = System.currentTimeMillis();
List<String> refreshedApps = new ArrayList<String>();
for (String appid : invalidApps) {
if (refreshedApps.contains(appid)) continue;
App app = null;
int index = -1;
for (App oldapp : apps) {
@ -839,8 +841,9 @@ public class DB {
}
apps.set(index, app);
refreshedApps.add(appid);
}
Log.d("FDroid", "Refreshing " + invalidApps.size() + " apps took "
Log.d("FDroid", "Refreshing " + refreshedApps.size() + " apps took "
+ (System.currentTimeMillis() - startTime) + " ms");
return apps;

View File

@ -28,7 +28,7 @@ public class PackageReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context ctx, Intent intent) {
String appid = intent.getData().getSchemeSpecificPart();
Log.d("FDroid", "PackageReceiver invalidating "+appid);
Log.d("FDroid", "PackageReceiver received "+appid);
((FDroidApp) ctx.getApplicationContext()).invalidateApp(appid);
}