[SettingsProvider] force close MemoryIntArray before garbage collection
BUG: 277448672 BUG: 274971295 Test: builds Change-Id: I2f8c9e65721dcfc41a382e7bf9e0c2ad7e1c66aa
This commit is contained in:
@@ -3037,14 +3037,23 @@ public final class Settings {
|
||||
public void destroy() {
|
||||
try {
|
||||
// If this process is the system server process, mArray is the same object as
|
||||
// the memory int array kept inside SetingsProvider, so skipping the close()
|
||||
if (!Settings.isInSystemServer()) {
|
||||
// the memory int array kept inside SettingsProvider, so skipping the close()
|
||||
if (!Settings.isInSystemServer() && !mArray.isClosed()) {
|
||||
mArray.close();
|
||||
}
|
||||
} catch (IOException e) {
|
||||
Log.e(TAG, "Error closing backing array", e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void finalize() throws Throwable {
|
||||
try {
|
||||
destroy();
|
||||
} finally {
|
||||
super.finalize();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static final class ContentProviderHolder {
|
||||
|
||||
Reference in New Issue
Block a user