1package android.databinding.testapp; 2 3import android.databinding.OnRebindCallback; 4import android.databinding.ViewDataBinding; 5import android.databinding.testapp.databinding.InvalidateAllLayoutBinding; 6import android.databinding.testapp.vo.NotBindableVo; 7 8import java.util.concurrent.Semaphore; 9import java.util.concurrent.TimeUnit; 10 11public class InvalidateAllTest extends BaseDataBinderTest<InvalidateAllLayoutBinding> { 12 13 public InvalidateAllTest() { 14 super(InvalidateAllLayoutBinding.class); 15 } 16 17 public void testRefreshViaInvalidateAll() throws InterruptedException { 18 final Semaphore semaphore = new Semaphore(1); 19 semaphore.acquire(); 20 final NotBindableVo vo = new NotBindableVo("foo"); 21 initBinder(new Runnable() { 22 @Override 23 public void run() { 24 mBinder.setVo(vo); 25 mBinder.addOnRebindCallback(new OnRebindCallback() { 26 @Override 27 public void onBound(ViewDataBinding binding) { 28 super.onBound(binding); 29 semaphore.release(); 30 } 31 }); 32 } 33 }); 34 assertTrue(semaphore.tryAcquire(2, TimeUnit.SECONDS)); 35 36 assertEquals("foo", mBinder.textView.getText().toString()); 37 vo.setStringValue("bar"); 38 mBinder.invalidateAll(); 39 40 assertTrue(semaphore.tryAcquire(2, TimeUnit.SECONDS)); 41 assertEquals("bar", mBinder.textView.getText().toString()); 42 43 } 44} 45