Pull to refresh

Comments 12

UFO landed and left these words here
Сделайте, пожалуйста, cut перед разделом «Кастомная клавиатура под Android».
И вынесите листинг под спойлеры.

Спасибо.

Отличный пример, как делать НЕ надо. Если вам нужна клавиатура в приложении, соизвольте генерировать её, а не описывать каждую кнопку руками.

"программный песок" – это творческое переосмысление синтаксического сахара?

Тернарный оператор, он вроде везде так зовется. Мне тоже глаза резануло.
Это код пожилого программиста
Позже я соберу zip-архив нашего примера и закину куда-нибудь на диск. И оставлю потом ссылку здесь на скачивание.

Тут стало очень толсто :)
<cut/> что не вставили то в тексте статьи после первого абзаца?
Было бы здорово, если бы данное решение было оформлено в виде библиотеки, чтобы была возможность переиспользовать в других проектах.
Простите, но в примере с ExecutorThread что-то явно не то. Вы передаёте туда TextView, и делаете setText не из main потока. У вас точно всё работает и не падает?:)
Это не статья для начинающих, автор сам только начал писать под Android. Неокрепшим умам может быть очень вредно.

1. KeyBoardListener — гвоздями прибит к MainActivity, это какой-то жуткий анти-паттерн. Сама клавиатура должна предоставлять интерфейс, позволяющий подписаться на нажатие клавиш. А тут есть Listener, который знает о том как клавиатура внутри устроена, editText сам обновляет и MainActivity в конструктор принимает.

2.
«А почему мы не сделаем hide или не вызовем метод gone?» А я вам отвечу, это связано с жадным сборщиком мусора android. Если мы вызовем этот метод, то все указатели на кнопки пропадут, и все отклики не будет работать.
Видимо имеется в виду setVisibility у View. Конечно никакой «жадный» GC ничего не будет собирать, на все вьюхи останутся жесткие ссылки.

3. То что Вы назвали «библиотека в Android Java ExecutorServise» никакая не библиотека, а просто класс из стандартного пакета java.util.concurrent.

4. ExecutorThread прекрасен во всех отношенях.
  • Принимает TextView, что черевато утечками и крашами. Activity уже давно умрёт, а поток из executor'а будет всё ещё держать ссылку на TextView, а значит и на всю activity + будет ещё и пытаться что-то обновить на уже «мертвой» activity.
  • doWork каждый раз вызывает newSingleThreadExecutor, что убивает всю идею executor'ов.


Это прям беглым взлядом и про совсем ахинею.

Автор пару советов:
1. Сделайте клавиатуру отдельной вьюхой.
2. Почитатйте про Executor'ы, у вас нет понимания зачем они вообще нужны.
Спасибо, большую часть ошибок поправил. TextView — не падает, я проверял. Согласен, жуткий анти-паттерн. Поправил. Мог бы улучшить, если бы знал, как вызвать onBackPressed() внутри класса. И по поводу setVisible(), у меня действительно пропадали указатели, потом где-то вычитал, что это связано со сборщиком мусора, сейчас переделал — всё заработало
Sign up to leave a comment.

Articles