Immediately destroy C++ state when deleteView is processed

Summary:
Followup to D26858584 (00959ffd6b). We should also immediately destroy C++ state memory (which will decrement a shared_ptr) when deleting a view.

This could improve memory while a surface is being used.

Changelog: [Internal]

Reviewed By: fkgozali

Differential Revision: D26876537

fbshipit-source-id: fc8353bed47db8fdbf5c7f6c6253ac788c460d9a
This commit is contained in:
Joshua Gross 2021-03-07 13:17:20 -08:00 коммит произвёл Facebook GitHub Bot
Родитель 077e434d77
Коммит b84ae3875c
1 изменённых файлов: 6 добавлений и 0 удалений

Просмотреть файл

@ -778,6 +778,12 @@ public class SurfaceMountingManager {
// or StopSurface being called, so we do not handle deleting descendents of the View.
mTagToViewState.remove(reactTag);
// Destroy state immediately instead of waiting for Java GC.
if (viewState.mStateWrapper != null) {
viewState.mStateWrapper.destroyState();
viewState.mStateWrapper = null;
}
// For non-root views we notify viewmanager with {@link ViewManager#onDropInstance}
ViewManager viewManager = viewState.mViewManager;
if (!viewState.mIsRoot && viewManager != null) {