@Override public void bind(@NonNull LithoView view) { Component<T> component = getComponent(view.getComponentContext()); if (view.getComponentTree() == null) { view.setComponentTree(ComponentTree.create(view.getComponentContext(), component) .asyncStateUpdates(false) // does this need to be off? .layoutThreadLooper(Looper.getMainLooper()) .incrementalMount( false) // this needs to be off for recyclerview to work. Should we manually // incrementally mount views in a scroll listener? .layoutDiffing(false) // should we use this? .build()); } view.setComponent(component); }
@Test public void testCreationWithInputs() { ComponentTree componentTree = mComponentTreeBuilder .layoutThreadLooper(mLooper) .build(); assertSameAsInternalState(componentTree, mRoot, "mRoot"); assertEqualToInternalState(componentTree, true, "mIsLayoutDiffingEnabled"); assertThat(componentTree.isIncrementalMountEnabled()).isTrue(); assertThat(mContext.getLogger()).isEqualTo(mComponentsLogger); assertThat(mContext.getLogTag()).isEqualTo(mLogTag); Handler handler = getInternalState(componentTree, "mLayoutThreadHandler"); assertThat(mLooper).isSameAs(handler.getLooper()); }
@Override public Builder layoutThreadLooper(Looper looper) { return (Builder) super.layoutThreadLooper(looper); }
@Test public void testReleaseAndInit() { mComponentTreeBuilder .layoutThreadLooper(mLooper); mComponentTreeBuilder.release(); Component root = TestLayoutComponent.create(mContext) .build(); mComponentTreeBuilder.init(mContext, root); ComponentTree componentTree = mComponentTreeBuilder.build(); assertSameAsInternalState(componentTree, root, "mRoot"); assertDefaults(componentTree); }