Problems with Draw Loop using u8glib I am using an Arduino Mega and a 12864ZW LCD with the u8glib library and the following code to draw to the LCD:

U8GLIB_ST7920_128X64 Display(LCD_E_PIN, LCD_RW_PIN, LCD_RS_PIN, U8G_PIN_NONE);

void loop(){
   Draw();
}

void Draw(){
   Display.firstPage();

   do{
      Display.setPrintPos(10, 10);
      Display.print("This is a test");
   }while(Display.nextPage());
}


The problem is that the display is constantly redrawing itself. When I used LCD displays in the past, they usually only required to write to the LCD once unless you wipe the display. When I adjusted the code to:

U8GLIB_ST7920_128X64 Display(LCD_E_PIN, LCD_RW_PIN, LCD_RS_PIN, U8G_PIN_NONE);
bool needsUpdate = true;

void loop(){
   Draw();
}

void Draw(){
   if (needsUpdate){
       Display.firstPage();
       do{
          Display.setPrintPos(10, 10);
          Display.print("This is a test");
       }while(Display.nextPage());
       needsUpdate = false;
   }
}


I do not get anything drawn on the LCD. Is there a parameter that needs to be set so I only have to redraw the LCD if something changes? Am I using an outdated library? Is there a better library I should be using?

EDIT

I think the main problem I have with using this library is does the Draw loop need to be executed continuously to display on the LCD or is there a way to only draw the screen once until it is needed to be drawn again?
You haven't shown us all the code – in particular, the call to Draw() from loop() is missing – so this answer is speculative, based on the assumption your loop() is as follows. 

void loop(void) {
    Draw();
}


If so, your first bit of code will constantly redraw because loop() runs repeatedly without delay.  Try adding a delay(1000); after Draw() in that case.

Your second bit of code will begin by drawing your image once, and in that Draw() call it will set needsUpdate to false.  Then loop() runs again, and the firstPage() call erases the screen.  Since needsUpdate now is false and remains false, subsequent calls don't draw an image.

Rather than putting your picture loop into Draw(), perhaps use Draw() just to draw primitives, and keep your controls in loop(): 

void loop(void) {
  Display.firstPage();  
  do {     // picture loop
    Draw();
  } while( Display.nextPage() );    
  delay(1000); // delay before next picture
}


If you still get repeated fast redraws, for troubleshooting comment out the do and } while lines.