@Override
 protected void onNewIntent(Intent intent) {
   super.onNewIntent(intent);
   if (remotePlugin == null) {
     return;
   }
   PluginActivityCallback caller = remotePlugin.getControl();
   if (caller != null) {
     caller.callOnNewIntent(intent);
   }
 }
 @Override
 public View onCreateView(View parent, String name, Context context, AttributeSet attrs) {
   if (remotePlugin == null) {
     return super.onCreateView(parent, name, context, attrs);
   }
   PluginActivityCallback caller = remotePlugin.getControl();
   if (caller != null) {
     return caller.callOnCreateView(parent, name, context, attrs);
   }
   return super.onCreateView(parent, name, context, attrs);
 }
 @Override
 protected void onPostResume() {
   super.onPostResume();
   if (remotePlugin == null) {
     return;
   }
   PluginActivityCallback caller = remotePlugin.getControl();
   if (caller != null) {
     caller.callOnPostResume();
   }
 }
 @Override
 public void onDetachedFromWindow() {
   if (remotePlugin == null) {
     return;
   }
   PluginActivityCallback caller = remotePlugin.getControl();
   if (caller != null) {
     caller.callOnDetachedFromWindow();
   }
   super.onDetachedFromWindow();
 }
 @Override
 public void onConfigurationChanged(Configuration newConfig) {
   super.onConfigurationChanged(newConfig);
   if (remotePlugin == null) {
     return;
   }
   PluginActivityCallback caller = remotePlugin.getControl();
   if (caller != null) {
     caller.callOnConfigurationChanged(newConfig);
   }
 }
 @Override
 public void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) {
   super.dump(prefix, fd, writer, args);
   if (remotePlugin == null) {
     return;
   }
   PluginActivityCallback caller = remotePlugin.getControl();
   if (caller != null) {
     caller.callDump(prefix, fd, writer, args);
   }
 }
  @Override
  public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (remotePlugin == null) {
      return super.onKeyDown(keyCode, event);
    }
    PluginActivityCallback caller = remotePlugin.getControl();
    if (caller != null) {

      LCallbackManager.callAllOnKeyDown(keyCode, event);
      return caller.callOnKeyDown(keyCode, event);
    }

    return super.onKeyDown(keyCode, event);
  }
  @Override
  protected void onRestart() {
    super.onRestart();
    if (remotePlugin == null) {
      return;
    }

    PluginActivityCallback caller = remotePlugin.getControl();
    if (caller != null) {
      try {
        caller.callOnRestart();
        LCallbackManager.callAllOnRestart();
      } catch (Exception e) {
        processError(e);
      }
    }
  }
  @Override
  public void onBackPressed() {

    if (remotePlugin == null) {
      super.onBackPressed();
    }

    PluginActivityCallback caller = remotePlugin.getControl();
    if (caller != null) {
      try {
        caller.callOnBackPressed();
        LCallbackManager.callAllOnBackPressed();
      } catch (Exception e) {
        processError(e);
      }
    }
  }