title: When should I synchronize and when should I build / rebuild project in Android Studio and can I automate it?
body: <p>What is the difference between the following actions in Android Studio and when should I use them?</p>
  
  <ul>
  <li>Synchronize</li>
  <li>Build project</li>
  <li>Rebuild project</li>
  </ul>
  
  <p>When do I use each one (after pull, after a change in xml file, after change in java file)</p>
  
  <p>Which is mandatory before Run and can I make Run automatically do whatever is needed for me?</p>