안드로이드 관련하여 초짜라서 이것 저것 찾아보다가 궁금한 것이 있어서 질문해봅니다.

Content provider를 통해 Query를 하기 위해서 사용할 수 있는 방법이 2가지가 있는 것으로 알고 있습니다.
1. managedQuery()를 통해서
2. ContentResolver.query()를 통해서

둘다 사용되는 argument도 동일하고, return 되는 형식도 cursor object로 동일하던데,

질문.>>
managedQuery()를 사용하는 경우는 Activity life cycle에 맞추어 해당 cursor object도 관리를 해주기 위해서
startManagingCursor(), stopManagingCursor()을 반드시 사용해야 하는 것인지요?
사용하지 않는다면 어떠한 일이 발생할 수 있는것인지요? (developer site에서 글을 읽어봤지만, 명쾌하게 이해가 되질 않습니다.)

두 가지 query 방법중에서 주로 사용되는 방법은 어떤것이 있는지요? (생각에는 ContentResolver.query()일 듯하지만. 모르는 뭔가가 더 있을 것 같습니다. )

또한 Query시에 projection을 통하여 원하는 column값만 return하도록 할 수 있던데,
이렇게 사용하는 경우와 null로 모든 column을 모두 가져오는 경우 대비 장점은 무엇인지요?
-cursor 객체를 위해 사용되어지는 메모리 사용량이 적다. 딱 떠오르는 것은 이것밖에 없어서
고수님들에게 질문을 올려봅니다.

수고하세요.