Чтобы понять, какой путь выбрать, необходимо ответить не только на ключевой вопрос CommonsWare «почему», но и на вопрос «к чему?»Вы передаете его.
Реальность такова, что единственное, что может проходить через связки, - это простые данные - все остальное основано на интерпретации того, что эти данные означают или на что указывают.Вы не можете буквально передать объект, но то, что вы можете сделать, это одна из трех вещей:
1) Вы можете разбить объект на составляющие его данные, и если то, что находится на другом конце, знает оОбъект такого же типа, он может собрать клон из сериализованных данных.Вот как большинство распространенных типов проходят через связки.
2) Вы можете передать непрозрачную ручку.Если вы передаете его в том же контексте (хотя можно спросить, зачем это нужно), это будет дескриптор, который вы можете вызвать или разыменовать.Но если вы передадите его через Binder в другой контекст, его буквальное значение будет произвольным числом (фактически, эти произвольные числа отсчитываются последовательно от запуска).Вы ничего не можете сделать, кроме как отслеживать это, пока не передадите его обратно в исходный контекст, что заставит Binder преобразовать его обратно в исходный дескриптор, что сделает его снова полезным.
3) Вы можете передатьмагический дескриптор, такой как дескриптор файла или ссылка на определенные объекты os / platform, и, если вы установите правильные флаги, Binder создаст клон, указывающий на тот же ресурс для получателя, который может фактически использоваться на другом конце.Но это работает только для очень немногих типов объектов.
Скорее всего, вы либо пропускаете свой класс только для того, чтобы другой конец мог отследить его и вернуть вам позже, либо вы передаете егов контекст, где клон может быть создан из сериализованных составляющих данных ... или вы пытаетесь сделать что-то, что просто не сработает, и вам нужно переосмыслить весь подход.