Код запиту не передається розпочатій діяльності автоматично, оскільки він не повинен (і не повинен) знати це значення. Потрібно лише знати, що робити, а не звідки було почато.
Початок діяльності насправді є лише черговою формою виклику методу. Коли ви викликаєте метод, ви отримуєте результат синхронно (саме там, де ви здійснили виклик). У цьому випадку ви передаєте лише інформацію, необхідну методу для виконання своєї роботи. Ви не розповідаєте, звідки ви це зателефонували.
Початок дії є асинхронним аналогом виклику методу, і в цьому випадку ви отримуєте результат за допомогою спеціального методу onActivityResult (). У цьому методі ви повинні знати, що робити з результатом, який ви щойно отримали, і у вас є код запиту для цього.
Щоб трохи зрозуміти, чому не є гарною ідеєю передавати код запиту як параметр, розглянемо приклад діяльності, який показує товар, який ви можете придбати. У цій діяльності є дві кнопки з написом "Купити" та "Увійти" (оскільки ви зараз не авторизовані). Якщо натиснути кнопку «Вхід», розпочнеться дія під назвою «Вхід», яка спробує увійти в систему за допомогою наданої інформації. Якщо натиснути кнопку "Купити", спочатку розпочнеться та сама операція "Вхід", і якщо вхід був успішним, розпочніть операцію покупки.
Тепер кнопка «Вхід» використовує код запиту 1 для запуску входу в систему, але кнопка «Купити» не може використовувати той самий код запиту, оскільки для успішного входу потрібно буде зробити щось інше. Отже, кнопка "Купити" використовує код запиту 2.
В операції "Вхід" ви можете отримати два різні коди запиту, залежно від того, звідки він був викликаний, але вам потрібно буде виконати ту саму процедуру.
Отже, якщо ви введете код запиту як параметр, ви отримаєте код, який повинен робити одне і те ж для декількох різних кодів запиту, наприклад:
if (requestCode == LOGIN || requestCode == BUY) {
// ...
} else ...
У кінцевому підсумку ви також збережете константи коду запиту в центральному розташуванні, наприклад, у класі з іменем RequestCodes.
Коротше кажучи, код запиту слід використовувати лише для вирішення, що робити з отриманим результатом. Таким чином ви отримаєте більш модульний, простіший в обслуговуванні та простіший розширення код.