|  | @@ -43,7 +43,7 @@ public abstract class RosActivity extends Activity {
 | 
	
		
			
				|  |  |    private final String notificationTicker;
 | 
	
		
			
				|  |  |    private final String notificationTitle;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  private NodeMainExecutorService nodeMainExecutorService;
 | 
	
		
			
				|  |  | +  protected NodeMainExecutorService nodeMainExecutorService;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    private final class NodeMainExecutorServiceConnection implements ServiceConnection {
 | 
	
		
			
				|  |  |      @Override
 | 
	
	
		
			
				|  | @@ -52,7 +52,9 @@ public abstract class RosActivity extends Activity {
 | 
	
		
			
				|  |  |        nodeMainExecutorService.addListener(new NodeMainExecutorServiceListener() {
 | 
	
		
			
				|  |  |          @Override
 | 
	
		
			
				|  |  |          public void onShutdown(NodeMainExecutorService nodeMainExecutorService) {
 | 
	
		
			
				|  |  | -          RosActivity.this.finish();
 | 
	
		
			
				|  |  | +          if ( !isFinishing() ) {
 | 
	
		
			
				|  |  | +            RosActivity.this.finish();
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |        });
 | 
	
		
			
				|  |  |        startMasterChooser();
 | 
	
	
		
			
				|  | @@ -112,7 +114,7 @@ public abstract class RosActivity extends Activity {
 | 
	
		
			
				|  |  |     */
 | 
	
		
			
				|  |  |    protected abstract void init(NodeMainExecutor nodeMainExecutor);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  private void startMasterChooser() {
 | 
	
		
			
				|  |  | +  public void startMasterChooser() {
 | 
	
		
			
				|  |  |      Preconditions.checkState(getMasterUri() == null);
 | 
	
		
			
				|  |  |      // Call this method on super to avoid triggering our precondition in the
 | 
	
		
			
				|  |  |      // overridden startActivityForResult().
 | 
	
	
		
			
				|  | @@ -133,8 +135,8 @@ public abstract class RosActivity extends Activity {
 | 
	
		
			
				|  |  |    @Override
 | 
	
		
			
				|  |  |    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
 | 
	
		
			
				|  |  |      super.onActivityResult(requestCode, resultCode, data);
 | 
	
		
			
				|  |  | -    if (requestCode == MASTER_CHOOSER_REQUEST_CODE) {
 | 
	
		
			
				|  |  | -      if (resultCode == RESULT_OK) {
 | 
	
		
			
				|  |  | +    if (resultCode == RESULT_OK) {
 | 
	
		
			
				|  |  | +      if (requestCode == MASTER_CHOOSER_REQUEST_CODE) {
 | 
	
		
			
				|  |  |          if (data == null) {
 | 
	
		
			
				|  |  |            nodeMainExecutorService.startMaster();
 | 
	
		
			
				|  |  |          } else {
 |