Ответы пользователя по тегу Android
  • Как добавить Spinner в ActionBar?

    mitaichik
    @mitaichik
    Думаю, тут работать нужно не с экешн-баром, а с toolbar'ом. Использование тулбара как экешн-бар позволяет сделать быструю миграцию со старых версий, да и многим просто облегчает работу с ним. Но сам по себе тулбар функциональнее чем интерфейс экшн-бара, поэтому для чего-то кастомного следует работать с ним напрямую.
    Ответ написан
    Комментировать
  • Почему Android ругается на сертификат?

    mitaichik
    @mitaichik
    Может время неправильно стоит на устройстве?
    Ответ написан
  • Нужен ли на самом деле антивирус на андроиде?

    mitaichik
    @mitaichik
    Сидел недавно на тостере, мне хоп - файл скачался "browser-securty-update.apk". Потом почитал - через рекламную сеть такое можно провернуть. В общем, у меня Сбербанк Онлайн стоит - сразу запищал, мол, вирус! Оказывается в него касперский встроен.

    Я б конечно ни за что его не стал бы ставить, но человек не образованный - вполне. Декомпильнув его я понял что он снифит разные данные + окошечки выводит мол "активируйте андройд" с вводом платежных данных.

    Так что необразованным пользователям - да, нужен.
    Ответ написан
    5 комментариев
  • Приложение и сайт, как построить API сайта?

    mitaichik
    @mitaichik
    Тут есть 2 варианта:

    1. В первую очередь делать API, с которым будет работать как и сайт так и приложение. Но тут следует учесть что сайт будет делать гораздо сложнее, ибо все данные будут подтягиваться запросами к АПИ после загрузки страницы, и прочее. В принципе, для SPA (single page application), или сайта с сложной фронтенд логикой это и так придется делать и такой подход предпочтительнее, но если у вас сайт простенький, это лишь создаст неудобства. Соответсвенно, чтоб сделать такой сайт нужен и квалифицированный фронтендщик. В принципе, это правильный подход.

    2. Делать сайт и отдельно API. Но тут с ростом сложности проекта будут возрастать затраты на поддержку сайта и апи одновременно, учитывание различий в их логики, и прочее.

    Я бы начал делать сайт отдельно, API отдельно, ибо на старте это быстрее. Если проект попрет и появятся необходимость к усложнению, созданию приложений на другие платформы - то потихоньку переделал на 1 вариант.

    Что касается технологий - то да: REST для начала самое то, да и большинство бекэнд фреймворков уже имеют поддержку для него. Скорее всего и не только для начала, но опять таки, зависит от проекта.
    Ответ написан
    Комментировать
  • Как убрать разделительные полосы в списке?

    mitaichik
    @mitaichik
    android:divider="@color/transparent" или null, не помню что конкретно туда надо писать.
    Ответ написан
    Комментировать
  • Какую HTTP-библиотеку лучше выбрать для связи клиента на Android с RESTful Web Service?

    mitaichik
    @mitaichik
    Retrofit - лучшее решение
    Ответ написан
    Комментировать
  • Какую рекламную площадку использует Habrahabr?

    mitaichik
    @mitaichik Автор вопроса
    В общем, такая реклама называется "Нативная" - есть у многих сетей. В приложении хабра подключены SDK от кучи сетей, как наших (Яндекс, Мейл) так и зарубежных. Но, как я понял, в реальности все работает через www.appodeal.ru , так как именно их компоненты подключены во въюхах, а все эти SDK - видимо, зависимости SDK от appodeal. В общем, вопрос пока не закрываю, попробую сделать интеграцию, отпишусь как что.
    Ответ написан
    Комментировать
  • Как сверстать подобный макет?

    mitaichik
    @mitaichik
    Посмтори в сторону android:scaleType, там вроде что-то было подобное
    Ответ написан
  • Как сделать централизованный обработчик ошибок в Retrofit 2?

    mitaichik
    @mitaichik
    Возможно помогут интерцепотры https://github.com/square/okhttp/wiki/Interceptors
    Ответ написан
    Комментировать
  • Есть iCloud для Android?

    mitaichik
    @mitaichik
    Google Диск
    Ответ написан
    Комментировать
  • Не подключается AndroidHttpClient в андроид студии, кто сталкивался?

    mitaichik
    @mitaichik
    Так это ж вроде часть AndroidSDK, его ж не нужно подключать? Или вы про что-то другое?

    А так - юзайте okhttp / retrofit
    Ответ написан
    Комментировать
  • Первый проект на java. Как решить NetworkOnMainThreadException?

    mitaichik
    @mitaichik
    Ява многопоточная, у приложения есть главный поток (отрисовывает UI например) и чтоб его всякие запросы в инет не блокировали, андройд запрещает делать их в главном потоке. Соответсвенно, вам нужно запустить интернет-запрос в отдельном потоке.

    Мой совет - юзайте библиотеки которые делют запросы за вас: okhttp / retrofit
    Ответ написан
    Комментировать
  • Как безопасно сохранить пароль в Android-приложении при его сборке?

    mitaichik
    @mitaichik
    Один на всех - очень, очень плохая идея! Посмотрите лучше в стороноу Dropbox API (если они есть, я хз). Пусть каждый хранит свои файлы у себя в аккаунте, а при установке приложения логинится туда самостоятельно.

    Еще раз повторюсь: очень плохая идея! Даже если вы зашьете его незаметно в KeyStore, то есть риск что его все равно получат: https://habrahabr.ru/post/169717/
    Ответ написан
  • Код ревью или что не так с моим тестовым заданием?

    mitaichik
    @mitaichik
    Сам в андройде не профессионал, скорее любитель, но свои 5 копеек вставлю:

    private static Context mContext;
    
        @Override
        public void onCreate() {
            super.onCreate();
            mContext = this;
        }


    Хз почему так, но это считается не камильфо. Сам так юзаю, и не одного краш-дампа не словил, но в android-сообществе это не приветствуется (надеюсь в комментах кто-то опишет почему). Принято передавать контекст.

    В MainActivity методы для работ с меню можно было удалить, ибо, судя по всему они нигде не юзаются (и видимо остались от типового шаблона).

    В RestClient идет присвоение в статическю переменную.

    private static RestClient instance;

    Я так понимаю ты делал синглтон. Хз приемлемо ли это в андройде, но я б сделал его как компонент приложения. В идеале вся эта фигня должна создаваться через DI (по карйней мере в бэкенд-разработке DI везде используется). Для андройда это библиотека Dagger 2 (сам еще не юзал, но выглядит многообещающе).

    Плюс там же:

    public static RestAPI get() {
            if(instance == null) instance = new RestClient();
            return instance.restAPI;
        }


    Этот метод по хорошему должен быть помечен как synchronized: если туда зайдут одновременно 2 потока, то может получиться что создадутся 2 RestClient'a. Тут конечно побоку - это вряд-ли что то сломает, но в крупных приложениях это ого-го какие проблемы создаст (я опять таки про бэкенд, ибо я больше по нему).

    Хранить во так параметры аутентификации - тоже не есть хорошо, но это тестовое задание, так что побоку.

    Теперь по фрагментам:

    list = (RecyclerView) v.findViewById(R.id.list);

    Ты присваиваешь свойствам фрагмента вьюхи, в onDestroyView не плохо бы их обнулить. А еще лучше, юзать butterknife.

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

    В обработке ответов ты проверяешь if (getActivity() == null) return;. Но этим ты проверяешь наличие активити, но не фрагмента, фрагмент может быть уничтожен, или его вьюха может быть уничтожена, или у активити может быть вообще другой фрагмент или еще что. Короче, это все приведет к крэшу.

    onTaskClick: По хорошему, менять фрагменты должна активити, фрагмент списка просто должен сказать "выбран такая-то задача", и вызвать каллбэк активити. А уже активити принять решение что делать дальше. В официальной документации описано как это сделать (механизм каллбэков).

    Реально смутил DetailsTaskFragment: для представления информации о одной задаче ты юзаешь RecyclerView. Имхо, это в корне не правильно. Я понимаю твою мотивацию, почему ты так сделал (экономия память на вьюхах и прочее). Но ты жестко задал структуру и тип отображения. Малейшее изменение требования отображения задачи, и весь этот код под удаление. Ну и инструмент неправильный: RecyclerView - это для списков, для больших списков, а задача - это не список, это сущьность. Если бы ты отказался от этой идеи, и заюзал обычный layout + DataBinding все было бы более удобно, изменяемо, и кода было бы раз в 10 меньше.

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

    ItemViewHolder - там у тебя обработчик. Хз правильно это или нет, но в примерх гугла обработчик вешается в onBindViewHolder.

    Так же не совсем понимаю (возможно просто задание не читал) метод addAll: почему бы просто не обновить список? Плюс опять это по большой части бизнес-логика. И что странно - не вижу notifyDataSetChanged().

    В общем как-то так.
    Ответ написан
    2 комментария
  • Зачем нужен Dependency Injection в Android разработке?

    mitaichik
    @mitaichik
    Имхо, хорошо о IoC и DI написанно в книге Spring 4 Для профессонилов. Понятно что там все по другому, нежели в Dagger, но теория хорошо описанна.
    Ответ написан
    Комментировать
  • Возможно ли устроиться на работу девелоперу-иностранцу в России?

    mitaichik
    @mitaichik
    Жил раньше в Питере, работал в разных крупных конторах. У нас работали ребята из Казахстана, Узбекистана, Украины (все были не граждане РФ). Их брали нормально. Что касается документов - хз как они были офромленны (знаю тлоько что у некоторых были эти самые РВП). В любом случае, если вы реально хороший специалист - крупная компания посуетится ради вас.

    Другое дело что их не интересует 3 месяца. Ради сотрудника на 3 месяца суетиться никто не будет, будь он гражданин РФ или нет, неважно. Компании ищут человека как минимум на несколько лет, ибо первые несколько месяцев новый сотрудник только вникает в проект, отвлекает разрабов вопросами, делает из-за незнания проекта баги, и в целом, замедляет процесс разработки.
    Ответ написан
    4 комментария
  • Можно ли мои приложения иметь одно и то-же лого (и графический контент) в Google Play?

    mitaichik
    @mitaichik
    Если у вас все легально, то лучше написать в службу поддержки Google и объяснить ситуацию, спросить как лучше из нее выйти. По описанию - мне присылали письмо с уведомлением что если я не изменю его - удалят приложение в течении 3х дней (или недели - не помню)
    Ответ написан
    1 комментарий
  • Как поставить android 4 на планшет с android 5?

    mitaichik
    @mitaichik
    Если не секрет - чего нельзя на петрке нельзя сделато что можно на 4ке? Я не в курсе как сделать, но, возможно проще купить новый планшет?
    Ответ написан
    Комментировать
  • Почему долго компилируется приложение после перехода на AndroidStudo 2?

    mitaichik
    @mitaichik Автор вопроса
    Еще помогает запустить gradle как демон https://www.timroes.de/2013/09/12/speed-up-gradle/
    Ответ написан
    Комментировать