Зачем использовать посылки, если вы можете выполнить ту же задачу, используя статические переменные?

я новичок в android и java... я читаю несколько дней об учебнике по Android для передачи данных или значений переменных из одного действия в другое или из одного класса в другой... но я не очень понимаю об этом. Можете ли вы сказать мне, что необходимо использовать Parcelable для этой цели, потому что та же задача может быть также выполнена с использованием ключевого слова static для переменных типа строки, целого числа или массива, тогда почему можно разделить, пожалуйста, объясните подробно .. спасибо за объяснение заранее, пожалуйста, предоставьте сравнение с примером


person atul yadav    schedule 08.07.2011    source источник


Ответы (2)


Хотя технически оба подхода будут работать, есть пара недостатков.

Во-первых, статическая переменная является статической. Если у вас есть два экземпляра одного и того же действия, они оба будут ссылаться на один и тот же статический объект. Это, вероятно, не то, что вы хотите.

Во-вторых, считается плохой практикой обращаться к глобальным переменным. Это затрудняет просмотр того, что происходит, его трудно протестировать, и вы, кто-то (другой класс), можете изменить ваши данные. Это создает некоторые ужасные ошибки.

Передавая данные через объект Parcelable, становится очень ясно, что вы делаете, и вы избегаете обеих этих проблем.

Обратите внимание, что этот совет относится не к Android, а скорее к Java и программированию в целом.

person David Snabel-Caunt    schedule 08.07.2011
comment
Привет, Дэвид, не могли бы вы предоставить мне рабочий код использования посылки. Потому что я ищу в Интернете, но нет полного исходного кода. Пожалуйста. мой адрес электронной почты: [email protected] - person atul yadav; 08.07.2011
comment
Это пример передачи объекта, реализующего Parcelable, в Activity. Если вы хотите передать свой собственный объект, вам необходимо реализовать интерфейс Parcelable. В документации Android есть пример. - person David Snabel-Caunt; 08.07.2011
comment
См. также этот учебник для другого примера .kbeanie.com/2010/06/ - person David Snabel-Caunt; 08.07.2011
comment
спасибо за ответы .. я пытаюсь узнать об этом ... надеюсь, что я буду ... :) - person atul yadav; 08.07.2011
comment
Не говоря уже о том, что статические переменные могут вызывать утечки памяти; если вы явно не установите статическую переменную, допускающую нулевое значение, обратно в нулевое значение, то любые ссылки на переменные не будут очищены сборщиком мусора. - person Patrick; 02.07.2016

Статические ссылки никогда не собирают мусор, поэтому в конечном итоге вы создаете нечто, называемое утечкой памяти.

Вы храните в памяти объект, который вам не нужен, и его нельзя освободить.

Если вы создадите достаточно экземпляров таких объектов, вы получите исключение нехватки памяти (oom), которое приведет к сбою приложения.

person No Co    schedule 02.08.2019