Check caller status precisely when registering receiver.
Fine tune commit 9ac9609f.
Because process may reuse same process record to restart.
It is better to check below conditions to skip:
1. Simple dead and has been cleaned.
=> .thread will be null
2.The process has restarted with new pid but has not attached yet.
=> .thread will be null
3.The process has restarted and attached.
=> The IBinder will be different
Change-Id: Ic052f5025558ca93e1a6ab11bca61fe995126bb9
This commit is contained in:
@@ -15262,8 +15262,9 @@ public final class ActivityManagerService extends ActivityManagerNative
|
||||
}
|
||||
|
||||
synchronized (this) {
|
||||
if (callerApp != null && callerApp.pid == 0) {
|
||||
// Caller already died
|
||||
if (callerApp != null && (callerApp.thread == null
|
||||
|| callerApp.thread.asBinder() != caller.asBinder())) {
|
||||
// Original caller already died
|
||||
return null;
|
||||
}
|
||||
ReceiverList rl
|
||||
|
||||
Reference in New Issue
Block a user