Now only re-drawing tiles which have changed - further optimisation could be to check if it is being changed to state it is already in, and only do a full redraw when changing activity.