From c2d9c8e20bea92bd8c1bd0954b0a393c1bb8fec0 Mon Sep 17 00:00:00 2001 From: Dianne Hackborn Date: Mon, 24 Jan 2011 21:59:21 -0800 Subject: [PATCH] Fix issue #3385054: HRI24 never enters suspend (LP0) - IKXEVEREST-3439 Um. My fix for calling onReceive() even after a receiver is unregistered actually made it so onReceive() is never called for the result receiver of a broadcast. Change-Id: I30efe05d8fdec6fee4222b7d797f2b303073dbcc --- core/java/android/app/LoadedApk.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/core/java/android/app/LoadedApk.java b/core/java/android/app/LoadedApk.java index 60213f81e3164..c406524439a74 100644 --- a/core/java/android/app/LoadedApk.java +++ b/core/java/android/app/LoadedApk.java @@ -567,6 +567,7 @@ final class LoadedApk { } else { rd.validate(context, handler); } + rd.mForgotten = false; return rd.getIIntentReceiver(); } } @@ -596,6 +597,7 @@ final class LoadedApk { rd.setUnregisterLocation(ex); holder.put(r, rd); } + rd.mForgotten = true; return rd.getIIntentReceiver(); } } @@ -666,6 +668,7 @@ final class LoadedApk { final boolean mRegistered; final IntentReceiverLeaked mLocation; RuntimeException mUnregisterLocation; + boolean mForgotten; final class Args extends BroadcastReceiver.PendingResult implements Runnable { private Intent mCurIntent; @@ -696,7 +699,7 @@ final class LoadedApk { final Intent intent = mCurIntent; mCurIntent = null; - if (receiver == null || !mRegistered) { + if (receiver == null || mForgotten) { if (mRegistered && ordered) { if (ActivityThread.DEBUG_BROADCAST) Slog.i(ActivityThread.TAG, "Finishing null broadcast to " + mReceiver);