[core] Clear activityThread cache (#867)
This commit is contained in:
parent
e1cdb46eb1
commit
29afb441d8
|
|
@ -73,7 +73,7 @@ public class BridgeService {
|
||||||
Log.i(TAG, "service " + SERVICE_NAME + " is dead. ");
|
Log.i(TAG, "service " + SERVICE_NAME + " is dead. ");
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@SuppressWarnings("JavaReflectionMemberAccess")
|
//noinspection JavaReflectionMemberAccess
|
||||||
Field field = ServiceManager.class.getDeclaredField("sServiceManager");
|
Field field = ServiceManager.class.getDeclaredField("sServiceManager");
|
||||||
field.setAccessible(true);
|
field.setAccessible(true);
|
||||||
field.set(null, null);
|
field.set(null, null);
|
||||||
|
|
@ -91,10 +91,25 @@ public class BridgeService {
|
||||||
Log.w(TAG, "clear ServiceManager: " + Log.getStackTraceString(e));
|
Log.w(TAG, "clear ServiceManager: " + Log.getStackTraceString(e));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
//noinspection JavaReflectionMemberAccess
|
||||||
|
Field field = ActivityThread.class.getDeclaredField("sPackageManager");
|
||||||
|
field.setAccessible(true);
|
||||||
|
field.set(null, null);
|
||||||
|
|
||||||
|
//noinspection JavaReflectionMemberAccess
|
||||||
|
field = ActivityThread.class.getDeclaredField("sPermissionManager");
|
||||||
|
field.setAccessible(true);
|
||||||
|
field.set(null, null);
|
||||||
|
Log.i(TAG, "clear ActivityThread");
|
||||||
|
} catch (Throwable e) {
|
||||||
|
Log.w(TAG, "clear ActivityThread: " + Log.getStackTraceString(e));
|
||||||
|
}
|
||||||
|
|
||||||
bridgeService.unlinkToDeath(this, 0);
|
bridgeService.unlinkToDeath(this, 0);
|
||||||
bridgeService = null;
|
bridgeService = null;
|
||||||
listener.onSystemServerDied();
|
listener.onSystemServerDied();
|
||||||
new Thread(()-> sendToBridge(serviceBinder, true)).start();
|
new Thread(() -> sendToBridge(serviceBinder, true)).start();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue