Difference between 3 methods to reset the application

Hello. I was wondering what the difference was between 3 actions that seem to do the same. All these commands can be used to restart the application:

driver.resetApp();

driver.installApp(“apppath”);
driver.launchApp();

driver.closeApp();
driver.launchApp();

Is there any difference? If so, what is it?