You could use a global bool variable to determine whether it is supposed to be gone or not. However, it will reset once you quit the application.
simply, make a global bool variable "IsDestroyed"
then in your FSM,
bool test "IsDestroyed" if TRUE then do nothing
bool test "IsDestroyed" if FALSE then destroy it.
If you want to persist even after you quit the application, you need to use player prefs.
to do that, use
Playerpref gets bool | key :<yourkey>| and save it to your bool variable, then continue as the previous step. Also, don't forget to set Playerpref with your new bool after you destroyed your canvas, so the next time you load, it will persist.
btw, what is your problem with the int playerprefs setup?