In my android app, I am debugging it with instant run enabled.
The app gives me unexpected errors very frequently, which gets resolved if I did a clean build.
For an example, there are sometimes class not found exceptions where the class is actually there. Also, sometimes there are class cast exceptions when trying to cast the
You are not the only one. Instant Run is little stable, or we can say unreliable, currently.
Instant Run has several swap steps as this document describes. In your case, Instant Run could not recognize your changes well, so did warm swap even it required cold swap, and so on.
Instant Run is useful when editting minor GUI placement, I want to say it is the only useful scenario currently, so I recommend you to turn it off during general development. You can make it disable by unchecking
Settings > Build, Execution, Deployment > Enable Instant Run to hot swap... checkbox.
If you think Instant Run is fancy and still want to use it, you will likely be faced such a problem many times. For that, just rebuild all as you experienced. That's all we can do now.