요청 코드는이 값을 알 필요가없고 알 필요가 없기 때문에 시작된 활동에 자동으로 전달되지 않습니다. 시작 위치가 아니라 무엇을해야하는지 알면됩니다.
활동을 시작하는 것은 실제로 메서드를 호출하는 또 다른 형태입니다. 메서드를 호출하면 결과가 동 기적으로 수신됩니다 (호출 한 위치에서 바로). 이 경우 메서드가 작업을 수행하는 데 필요한 정보 만 전달합니다. 어디에서 전화했는지 말하지 않습니다.
활동을 시작하는 것은 메서드를 호출하는 비동기식 아날로그이며,이 경우 특수 메서드 onActivityResult ()에서 결과를받습니다. 이 방법에서는 방금받은 결과로 무엇을해야하는지 알아야하며 이에 대한 요청 코드가 있어야합니다.
요청 코드를 매개 변수로 전달하는 것이 좋은 생각이 아닌 이유를 좀 더 명확히하기 위해 구매할 수있는 제품을 보여주는 예제 활동을 고려하십시오. 이 활동에는 "구매"및 "로그인"이라는 레이블이 붙은 두 개의 버튼이 있습니다 (현재 로그인하지 않았으므로). "로그인"을 누르면 제공된 정보를 사용하여 사용자 로그인을 시도하는 "로그인"이라는 활동이 시작됩니다. "구매"를 누르면 먼저 동일한 "로그인"활동이 시작되고 로그인이 성공한 경우 구매 활동이 시작됩니다.
이제 "로그인"버튼은 요청 코드 1을 사용하여 로그인 활동을 시작하지만 "구매"버튼은 로그인이 성공하면 다른 작업을 수행해야하므로 동일한 요청 코드를 사용할 수 없습니다. 따라서 "구매"버튼은 요청 코드 2를 사용합니다.
"로그인"활동에서 호출 된 위치에 따라 두 개의 서로 다른 요청 코드를 수신 할 수 있지만 동일한 절차를 수행해야합니다.
따라서 요청 코드를 매개 변수로 전달하면 다음과 같이 몇 가지 다른 요청 코드에 대해 동일한 작업을 수행해야하는 코드가 생성됩니다.
if (requestCode == LOGIN || requestCode == BUY) {
} else ...
또한 RequestCodes라는 클래스와 같은 중앙 위치에 요청 코드 상수를 저장하게됩니다.
요컨대, 요청 코드는 수신 된 결과로 무엇을 할 것인지 결정하는 데만 사용해야합니다. 이렇게하면 더 모듈화되고 유지 관리 및 코드 확장이 더 쉬워집니다.