From cb3ab221f72fa10a3c72142dd7567161fb9af878 Mon Sep 17 00:00:00 2001 From: Wen Jing Date: Thu, 27 Mar 2014 13:42:59 +0800 Subject: [PATCH] Skip receiver if failed linkToDeath to ILocationListener linkToDeath may failed when app was dead immediately after starting the call to requestLocationUpdates in Location service. If receiver still record in maps, an exception will occurred when try to remove receiver's update because unlinkToDeath will failed. Change-Id: Id9b00da3b17c1371d61ab4644a70cf9ee934cdcc --- .../core/java/com/android/server/LocationManagerService.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/LocationManagerService.java b/services/core/java/com/android/server/LocationManagerService.java index 28a6917cb0c74..9eb1a182bd4a1 100644 --- a/services/core/java/com/android/server/LocationManagerService.java +++ b/services/core/java/com/android/server/LocationManagerService.java @@ -1450,14 +1450,13 @@ public class LocationManagerService extends ILocationManager.Stub { if (receiver == null) { receiver = new Receiver(listener, null, pid, uid, packageName, workSource, hideFromAppOps); - mReceivers.put(binder, receiver); - try { receiver.getListener().asBinder().linkToDeath(receiver, 0); } catch (RemoteException e) { Slog.e(TAG, "linkToDeath failed:", e); return null; } + mReceivers.put(binder, receiver); } return receiver; }