You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							73 lines
						
					
					
						
							1.6 KiB
						
					
					
				
			
		
		
	
	
							73 lines
						
					
					
						
							1.6 KiB
						
					
					
				/*
 | 
						|
 * Copyright (c) Facebook, Inc. and its affiliates.
 | 
						|
 *
 | 
						|
 * This source code is licensed under the MIT license found in the
 | 
						|
 * LICENSE file in the root directory of this source tree.
 | 
						|
 */
 | 
						|
 | 
						|
import android.os.Binder;
 | 
						|
import android.os.Handler;
 | 
						|
import android.os.Looper;
 | 
						|
import android.os.RemoteException;
 | 
						|
import java.util.concurrent.Executor;
 | 
						|
 | 
						|
class ImplicitConstructor {
 | 
						|
  static Binder binder;
 | 
						|
 | 
						|
  private static void doTransact() {
 | 
						|
    try {
 | 
						|
      binder.transact(0, null, null, 0);
 | 
						|
    } catch (RemoteException e) {
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  @ForUiThread private final Executor mUiThreadExecutor = null;
 | 
						|
 | 
						|
  Executor mUiExecutor = mUiThreadExecutor;
 | 
						|
  Executor mNonUiExecutor = Executors.getBackgroundExecutor();
 | 
						|
  Handler mUiHandler = new Handler(Looper.getMainLooper());
 | 
						|
  Runnable mBadRunnable =
 | 
						|
      new Runnable() {
 | 
						|
        @Override
 | 
						|
        public void run() {
 | 
						|
          doTransact();
 | 
						|
        }
 | 
						|
      };
 | 
						|
 | 
						|
  Runnable mOkRunnable =
 | 
						|
      new Runnable() {
 | 
						|
        @Override
 | 
						|
        public void run() {}
 | 
						|
      };
 | 
						|
 | 
						|
  Runnable mAmbiguous;
 | 
						|
 | 
						|
  ImplicitConstructor() {
 | 
						|
    mAmbiguous = mBadRunnable;
 | 
						|
  }
 | 
						|
 | 
						|
  ImplicitConstructor(int data) {
 | 
						|
    mAmbiguous = mOkRunnable;
 | 
						|
  }
 | 
						|
 | 
						|
  public void postBlockingCallToUIExecutorBad() {
 | 
						|
    mUiExecutor.execute(mBadRunnable);
 | 
						|
  }
 | 
						|
 | 
						|
  public void postNoopCallToUIExecutorOk() {
 | 
						|
    mUiExecutor.execute(mOkRunnable);
 | 
						|
  }
 | 
						|
 | 
						|
  public void postBlockingCallToNonUIExecutorOk() {
 | 
						|
    mNonUiExecutor.execute(mBadRunnable);
 | 
						|
  }
 | 
						|
 | 
						|
  public void postBlockingCallToUIHandlerBad() {
 | 
						|
    mUiHandler.post(mBadRunnable);
 | 
						|
  }
 | 
						|
 | 
						|
  public void postAmbiguousRunnableToUIExecutorOk() {
 | 
						|
    mUiExecutor.execute(mAmbiguous);
 | 
						|
  }
 | 
						|
}
 |