private void onFinishAnimation(ExecutableAnimation animation) {
        mReactContext.getJSModule(RCTEventEmitter.class).receiveEvent(
                mParentComponent.getId(),
                ViroEvents.ON_ANIMATION_FINISH,
                null);

        // If the animation changed, we won't terminate or loop
        if (mExecutableAnimation == animation) {
            mState = AnimationState.TERMINATED;
            if (mLoop && mRun) {
                playAnimation();
            }
        }
    }
This method should be called by the JNI layer when the animation ends and notifies the JS
bridge. It also handles looping logic.
android/viro_bridge/src/main/java/com/viromedia/bridge/component/VRTManagedAnimation.java