Cant stop code from being run after reset

byte lastbuttonState = 0; // new global variable

void loop() {
buttonState = digitalRead(buttonPin);
// normal debounce code here

  if(buttonState != lastbuttonState) {
    activate();
    lastbuttonState = buttonState;
   } 
}

Alternative:

byte lastbuttonState = 0; // new global variable
byte buttonState2 = 0;
void loop() {

buttonState1 = digitalRead(buttonPin);
delay(20);
buttonState2 = digitalRead(buttonPin);

  if(buttonState1 == buttonState2) {
    if(buttonState2 != lastbuttonState) {
     activate();
     lastbuttonState = buttonState2;
    }
  } 
}

dont forget the setup()