From e56d604d6faa9fcf2f9e30ecb67cd32757aae595 Mon Sep 17 00:00:00 2001 From: Peter Serwylo Date: Thu, 21 Apr 2016 13:51:16 +1000 Subject: [PATCH] Only cleanup receivers, don't reset the UI when in `onDestroy()`. When an Activity is destroyed, the next time it is created should reinitialize all of the UI stuff again. Thus, there is no point to clearing up the UI state before leaving. More importantly, this was causing a problem when navigating back and forth through activities via the downloader service notifications: ``` E java.lang.RuntimeException: Unable to destroy activity {org.fdroid.fdroid/org.fdroid.fdroid.AppDetails}: java.lang.IllegalStateException: activity is already destroyed ... E Caused by: java.lang.IllegalStateException: activity is already destroyed E at android.nfc.NfcActivityManager$NfcActivityState.(NfcActivityManager.java:126) E at android.nfc.NfcActivityManager.getActivityState(NfcActivityManager.java:176) E at android.nfc.NfcActivityManager.setNdefPushContentUri(NfcActivityManager.java:252) E at android.nfc.NfcAdapter.setBeamPushUris(NfcAdapter.java:830) E at org.fdroid.fdroid.NfcHelper.disableAndroidBeam(NfcHelper.java:68) E at org.fdroid.fdroid.AppDetails$AppDetailsHeaderFragment.updateViews(AppDetails.java:1507) E at org.fdroid.fdroid.AppDetails$AppDetailsHeaderFragment.updateViews(AppDetails.java:1490) E at org.fdroid.fdroid.AppDetails$AppDetailsHeaderFragment.removeProgress(AppDetails.java:1473) E at org.fdroid.fdroid.AppDetails.cleanUpFinishedDownload(AppDetails.java:442) E at org.fdroid.fdroid.AppDetails.onDestroy(AppDetails.java:567) E at android.app.Activity.performDestroy(Activity.java:6169) E at android.app.Instrumentation.callActivityOnDestroy(Instrumentation.java:1141) E at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3726) E ... 10 more ``` This is related to `onDestroy` calling a method which ends up calling UI related stuff that assumes the `Activity` is around to interact with. --- app/src/main/java/org/fdroid/fdroid/AppDetails.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/fdroid/fdroid/AppDetails.java b/app/src/main/java/org/fdroid/fdroid/AppDetails.java index a295724d0..b63f1e8b5 100644 --- a/app/src/main/java/org/fdroid/fdroid/AppDetails.java +++ b/app/src/main/java/org/fdroid/fdroid/AppDetails.java @@ -564,7 +564,7 @@ public class AppDetails extends AppCompatActivity { @Override protected void onDestroy() { - cleanUpFinishedDownload(); + unregisterDownloaderReceivers(); super.onDestroy(); }