@Override
            public void run() {
                UncaughtExceptionHandling.clearCrashLogFile();
                UncaughtExceptionHandling.setGlobalExceptionHandler();

                if (args.isLoadExtensions() && args.getBootstrapClassNames() != null) {
                    extensionLoader.runAfterApplicationCreateBootstrap(
                        LightweightInstrumentation.this,
                        args.getBootstrapClassNames().split(","));
                }

                if (args.getServiceClassName() != null) {
                    Intent serviceIntent = Intents.createStartServiceIntent(
                            context, args.getServiceClassName(), args.getIntentAction());
                    context.startService(serviceIntent);
                } else {
                    // Start the new activity
                    String activity = args.getActivityClassName();
                    Intent intent = null;
                    if (activity != null) {
                        intent = Intents.createStartActivityIntent(context, activity);
                    } else if (args.getIntentUri() != null) {
                        intent = Intents.createUriIntent(args.getIntentAction(), args.getIntentUri());
                    }
                    if (intent != null) {
                        context.startActivity(intent);
                    }
                }
            }
A lightweight instrumentation without server
It's used for starting the app and running bootstrap only, where you don't want to interact with the app further
selendroid-server/src/main/java/io/selendroid/server/LightweightInstrumentation.java