From 3ce8cbf5bda19df90e8bfefedf9900a26ac86025 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=AD?= Date: Mon, 8 Jul 2013 11:21:36 +0200 Subject: [PATCH] Restore old invalidations after apk installs/uninstalls. Do not refresh the same app multiple times. --- src/org/fdroid/fdroid/AppDetails.java | 8 ++++++-- src/org/fdroid/fdroid/DB.java | 5 ++++- src/org/fdroid/fdroid/PackageReceiver.java | 2 +- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/org/fdroid/fdroid/AppDetails.java b/src/org/fdroid/fdroid/AppDetails.java index bdda0cbef..88ac8d0fe 100644 --- a/src/org/fdroid/fdroid/AppDetails.java +++ b/src/org/fdroid/fdroid/AppDetails.java @@ -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: diff --git a/src/org/fdroid/fdroid/DB.java b/src/org/fdroid/fdroid/DB.java index 658296b97..493efd089 100644 --- a/src/org/fdroid/fdroid/DB.java +++ b/src/org/fdroid/fdroid/DB.java @@ -800,7 +800,9 @@ public class DB { List installedPackages = mContext.getPackageManager() .getInstalledPackages(0); long startTime = System.currentTimeMillis(); + List refreshedApps = new ArrayList(); 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; diff --git a/src/org/fdroid/fdroid/PackageReceiver.java b/src/org/fdroid/fdroid/PackageReceiver.java index da05ba4f0..5716c5dc7 100644 --- a/src/org/fdroid/fdroid/PackageReceiver.java +++ b/src/org/fdroid/fdroid/PackageReceiver.java @@ -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); }