꼭 필요한것은 아니지만 ANR을 회피하기 위해서는 사용해야 하지요.
ANR이라는것은 사용자 입장에서 어플리케이션으로부터 응답이 없는 현상 즉 가만히 멈춰있는 현상을 말합니다.
프로그램 정책상 사용자 인터페이스는 항상 사용자로부터 응답을 대기 하고 있어야 하므로 UI쓰레드에서 시간복잡도가 큰 작업은 되도록 피해야 합니다. 예를 들어서 파일스트림이나 통신 같은 I/O 작업을 말합니다.
DB 같은경우도 데이터 양이 많아지는경우 UI쓰레드를 오랫동안 붙잡을수 있으므로 회피하기 위하여 질문자님이 보신 예제소스에서도 비동기쓰레드인 AsynTask를 사용한 것일 겁니다.