Как стать автором
Обновить
11
0
Андрей Крот @alcsan

Пользователь

Отправить сообщение
Как вариант:
Продал людям неработающий антивирус? — Какой молодец, не пилил же грант в сколково за чужое изобретение 10 летней давности
Увидел эту новость в списке «Лучшее за 24 часа». Злой Хабр.
Что это за такой интересный планшет на картинке? Вроде и Android, и со стилусом, и не Samsung.
Сейчас испытывал компонент в полевых условиях — опасения по поводу вызова invalidate() из onDraw(…) подтвердились:
выполнив пересчет и отрисовку, компонент сразу же принимается повторить это действие и так продолжается непрерывно.
Отрисовка, конечно, получается плавная, но при этом употребляется 700 МГц процессора, телефон быстро расходует энергию и тормозит даже шторка уведомлений. А еще это, пожалуй, первый раз, когда мой Galaxy Nexus начал ощутимо нагреваться.
Исправить это достаточно просто: далеко не всегда нам нужно обновлять таймер непрерывно. Здесь нужно учитывать то, сколько времени должно пройти для того, чтобы изменение было визуально заметно. Например, мы запускаем в этом компоненте отсчет 5 секунд на планшете с высоким разрешением, тогда есть смысл делать непрерывное обновление. Или это таймер на два часа на телефоне с низким разрешением. Мы можем выполнять хоть 10 перерисовок в секунду, но визуально они заметны не будут.
Вы перепутали ссылку на источник и забыли пометить пост как перевод.
Мое предположение строится на этом ответе со StackOverflow ( http://stackoverflow.com/a/7197867/1219241 ), который полностью повторяет ваш код и которым я сам пользовался несколько дней назад.
Чуть улучшенный вариант (соблюдены соглашения о именовании, а «arialTypeface» не захардкорено = в любой момент можно использовать любой шрифт, не добавляя в код лишний «private static Typeface ...»):

    public static final HashMap<String, Typeface> sTypefaceCache = new HashMap<String, Typeface>();
    public static final Typeface getTypeface(AssetManager mgr, String path) {
        if(!sTypefaceCache.containsKey(path)) {
            Typeface tf = Typeface.createFromAsset(mgr, path);
            sTypefaceCache.put(path, tf);
        }
        return sTypefaceCache.get(path);
    }
Давно использую шаблоны для Android-разработки, почерпнул немного нового из статьи.
От себя могу добавить простенький шаблон:

Log.i("Invoked", "" + this);


Теперь, когда нужно быстро проверить проходит ли приложение через некоторую точку, сколько раз, когда и сколько времени проходит между посещениями этой точки, нажимаю Ctrl + Space и пишу «log_inv».
Разумеется, использовать это стоит только при разработке и не оставлять лишних логов в приложении.
Пожалуй, самый эпичный TODO-комментарий:

// TODO make a TODO here
Я бы на вашем месте поставил до ката последнюю картинку вместо текущей.
И пара занудных замечаний:

onBootReceiver — названия классов начинаются с большой буквы (OnBootReceiver).

Нехорошо использовать строку «android.intent.action.BOOT_COMPLETED», лучше использовать константу Intent.ACTION_BOOT_COMPLETED.

Оно-то, конечно, мелочи, но не стоит приучаться к плохому.
Для реализации задачи был выбран язык программирования Java. Я не буду вдаваться в подробности причины выбора языка.

На чем же еще мсьё планировал реализовать подобный функционал?
2

Информация

В рейтинге
Не участвует
Откуда
Харьков, Харьковская обл., Украина
Дата рождения
Зарегистрирован
Активность