Merge "[SettingsProvider] force close MemoryIntArray before garbage collection" into udc-dev

This commit is contained in:
Song Chun Fan
2023-04-19 15:59:25 +00:00
committed by Android (Google) Code Review

View File

@@ -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 {