З'ясування того, який шлях потрібно пройти, потрібно відповісти не лише на ключове питання CommonsWare "чому", але і на питання "до чого?" ти передаєш його
Реальність полягає в тому, що єдине, що може пройти через пакети, - це звичайні дані - все інше базується на інтерпретації того, що ці дані означають або вказують. Ви не можете буквально передати об'єкт, але те, що ви можете зробити, це одна з трьох речей:
1) Ви можете розбити об'єкт до даних, що складаються, і якщо те, що знаходиться на іншому кінці, має знання про той самий тип об'єкта, він може зібрати клон із серіалізованих даних. Ось так більшість поширених типів проходять через пучки.
2) Можна пропустити непрозору ручку. Якщо ви передаєте його в тому ж контексті (хоча можна запитати, чому турбувати), це буде ручка, яку ви можете викликати або перенаправляти. Але якщо передати його через Binder в інший контекст, це буквальне значення буде довільним числом (насправді ці довільні числа рахуються послідовно від запуску). Ви нічого не можете зробити, окрім як слідкуйте, поки не повернете його до початкового контексту, що змусить Біндера перетворити його назад в оригінальну ручку, зробивши його знову корисною.
3) Ви можете передати магічну ручку, наприклад, дескриптор файлу або посилання на певні об'єкти ОС / платформи, і якщо встановити правильні прапори, Binder створить клон, що вказує на той самий ресурс для одержувача, який фактично може бути використаний на інший кінець. Але це працює лише для дуже мало типів об’єктів.
Швидше за все, ви або передаєте свій клас просто для того, щоб інший кінець міг відслідковувати його і повертати йому пізніше, або ви передаєте його в контекст, де клон може бути створений із серіалізованих складових даних ... або ще ви намагаєтесь зробити щось, що просто не працює, і вам потрібно переосмислити весь підхід.