When is the best time to validate an EditText OR an Input Field?

I have a form with a few fields in them. I wish to validate all of them before I could submit the details entered. For example, First Name should have atleast 1 character. Email should match the Email-format. Password should be atleast 6 characters and so on...

Based on the validation, I have to put a green-right-tick or a red-cross symbol at the end of the field.

I'm working on an android app, but I think a similar problem could occur in a web app too.

Now, my question is when should I validate the fields? By validating, I mean either I put the right-tick or, the wrong-cross with Error Message. Here are the options that I'm considering right now:

  1. I validate them with every keystroke.

  2. I validate a particular field when focus from that field goes away. That's when the user is done typing into that field.

  3. I start validating when a user pauses typing for sometime, say 0.5 seconds.

I know the question might be opinion-based, but from the perspective of an End user, what would be the best experience? Please add more options as well, if we can have something better than the above 3 options.