Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос
Tsudzukeru

Tsudzukeru

  • 1
    вклад
  • 88
    вопросов
  • 9
    ответов
  • 100%
    решений
Лайки
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Как сформировать путь к библиотеке из gitlab?

    Олег @402d
    начинал с бейсика на УКНЦ в 1988
    https://jitpack.io/
    Вроде бы все расписано.
    Саму библиотеку даже не нужно специально описывать как для мавен.

    settings.gradle в корне
    include ':library'
    rootProject.name='How to make a library'

    library/build.gradle
    plugins {
    id 'com.android.library'
    }
    в общем обычный такой конфиг для либы, только он теперь лежит не рядом с проектом, а имплементиться.
    Ответ написан 06 июл. 2022
    3 комментария
    3 комментария
  • Как реализовать обработку side эффектов в чистом MVI?

    iLLuzor
    illuzor @iLLuzor
    Java, Kotlin, Android Developer
    Нужно создать отдельную сущность, которая будет обрабатывать сайдэффекты, обычно она называется middleware.
    Например есть middleware для запроса в сеть, он бросает стейт progress перед запросом и стейт error/result после выполнения запроса.
    Ответ написан 04 июл. 2022
    Комментировать
    Комментировать
  • Когда нужно вызывать super в переопределенном методе?

    acwartz @acwartz
    Тут должна быть ваша реклама.
    Очень зависит от класса-предка, и всей объектной модели языка программирования. Вдруг все классы где-то регистрируются и вызов super - просто данность?

    Если он делает в конструкторе работу которую нужно сделать чтобы Вы могли работать с ним, то вызов нужен.
    Например класс-предок инициализирует какие-то сокеты или ещё что, а вы решили просто своё свойство дописать,
    без super класс работать не будет как надо.
    При том вы сами решаете когда это делать, хоть не делать, хоть в начале, хоть в конце, хоть по условию.

    Например в callback методах системы Android эти вызовы должны присутствовать. Почему не знаю.

    Потому что система видит что вами определен свой код, и делегирует ему вызов системного кода. Если вы замещаете системный код (скрытый в super'ах) - не делаете вызов super (что вообще редко, ибо он завернут в исключительную конструкцию чтоб не сломать UI и дать работать хотяб системному коду, в случае ошибок в вашей программе), если не замещаете а дополняете, делаете.
    Ответ написан более года назад
    Комментировать
    Комментировать
  • Как выполнить DI в Activity, используя dependencies?

    zagayevskiy
    Денис Загаевский @zagayevskiy Куратор тега Android
    Android developer at Yandex
    Чтобы это работало, в компоненте зависимостей должны быть явные provision-методы(геттеры) для всего, что должно попасть в граф другого компонента. В твоём случае надо добавить в AppComponent метод
    @Named("app string")
     fun appString(): String
    Ответ написан более двух лет назад
    3 комментария
    3 комментария
  • Как выстроить организацию модулей Dagger(AndroidInjector)?

    zagayevskiy
    Денис Загаевский @zagayevskiy Куратор тега Android
    Android developer at Yandex
    Я не увидел, где у тебя объявлено, что сгенерированный компонент фрагмента будет сабкомпонентом для компонента активити. Если это не так(а это не так), то эта твоя стринга находится в другой части графа, и, конечно, получить к ней доступ не получится.
    Я думаю, что в ActivityProvider в ContributesAndroidInjector(modules) ты должен также указывать FragmentProvider. Тогда код нагенерится правильно.

    А, соответственно, в AppComponent должны остаться только AndroidInjectionModule, AppModule, и ActivityProvider.

    Вот это можно почитать https://m.habr.com/ru/post/336462/
    Ответ написан более двух лет назад
    2 комментария
    2 комментария
  • Как правильно создать субкомпонент dagger?

    zagayevskiy
    Денис Загаевский @zagayevskiy Куратор тега Android
    Android developer at Yandex
    Если это весь код BaseApplication, то конечно же ничего не заинжектится. Магии не бывает, чтобы @Inject поля получили значение, кто-то должен вызвать inject-метод для объекта. У тебя никто этого не делает. Ты должен в AppComponent добавить метод inject (BaseApplication), и вызывать его в onCreate application.
    Ответ написан более двух лет назад
    2 комментария
    2 комментария
  • Почему picasso грузит изображения БЕЗ подключения к интернет?

    iLLuzor
    illuzor @iLLuzor
    Java, Kotlin, Android Developer
    Потому что после загрузки изображения сохраняются в кэше
    Ответ написан более двух лет назад
    3 комментария
    3 комментария
  • Как получить POJO из JsonArray?

    azerphoenix
    Орхан Гасанлы @azerphoenix Куратор тега Java
    Java Software Engineer
    Онлайн - https://www.jsonschema2pojo.org/
    У них также есть maven plugin, которым можно воспользоваться.
    Умеет генерировать pojo для jackson & gson etc.
    Ответ написан более двух лет назад
    6 комментариев
    6 комментариев
  • Как вызвать меню выбора параметров в Android Studio?

    foonfyrick @foonfyrick
    ctrl + space
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Нужно ли делать DI для простых Kotlin объектов?

    Alex_Wells
    Alex Wells @Alex_Wells
    PHP/Kotlin
    Ну, если у твоего конвертера нет зависимостей, он не open и не интерфейс - то можно и object, разницы вообще никакой.
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Нужно ли делать DI для простых Kotlin объектов?

    zagayevskiy
    Денис Загаевский @zagayevskiy Куратор тега Android
    Android developer at Yandex
    Вообще - да, нужно всё внедрять. Давай приведу пример. Вот у тебя какой-то медиа превью конвертер. Не знаю, чем он занимается, но предположим, он форматирует некое превью, фото или видео, так? В этом случае может понадобиться использовать контекст для получения размеров экрана, тк превью на разных экранах может иметь разные размеры. Вот тут-то di и поможет.
    Ответ написан более двух лет назад
    2 комментария
    2 комментария
  • Что используете для проигрывания аудио/видео?

    CityCat4
    CityCat4 @CityCat4
    Жил-был у бабушки серенький троллик...
    vlc
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Что используете для проигрывания аудио/видео?

    HemulGM
    Hemul GM @HemulGM
    Delphi Developer, сис. админ
    basslib
    для видео vlc
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Почему файл не соххраняется в External Storage?

    iLLuzor
    illuzor @iLLuzor
    Java, Kotlin, Android Developer
    Нужно запросить пермишен у пользователя
    https://developer.android.com/guide/topics/permiss...
    https://source.android.com/devices/tech/config/run...
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Что почитать по архитектурным шаблонам проектирования?

    vabka
    Василий Банников @vabka
    Токсичный шарпист
    Советую почитать книжку Боба Мартина "Чистая Архитектура".
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Что почитать по архитектурным шаблонам проектирования?

    azerphoenix
    Орхан Гасанлы @azerphoenix Куратор тега Java
    Java Software Engineer
    Есть курс на FoxMinded Enterprise Patterns - https://foxminded.com.ua/enterprise-patterns-advan...
    Не знаю насколько хорошим этот курс является, но думаю, что это может вам чем-то помочь
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Как вызвать retry() для асинхронного метода, изменив параметры вызова этого метода?

    zagayevskiy
    Денис Загаевский @zagayevskiy Куратор тега Java
    Android developer at Yandex
    Всё происходит правильно. AsyncMethod(param1,param2,ApiKeyStore.CurrentKey) вызывается только один раз, и при каждом retry происходит переподписка к его результату. Поэтому ключ не меняется. Нужно сделать так, чтобы при retry вызывался сам метод, а значит - использовать Observable.defer:
    Observable.defer { AsyncMethod(param1,param2,ApiKeyStore.CurrentKey) } 
    .doOnError{
        ApiKeyStore.getNextApiKey()
    }
    .retry(ApiKeyStore.attemptsNumber)

    Теперь при retry переподписка будет к defer, и каждый раз будет вызываться AsyncMethod с новыми параметрами.
    Как-то так.
    Ответ написан более двух лет назад
    1 комментарий
    1 комментарий
  • Как правильно очистить ресурсы во вложенном запросе RxJava?

    zagayevskiy
    Денис Загаевский @zagayevskiy Куратор тега Java
    Android developer at Yandex
    Нет, всё очень плохо, так Rx использовать нельзя.
    Внутри цепочки сайдэффекты нужно минимизировать, они у тебя на любой чих.
    Внутри цепочки не должно быть никаких "освобождений ресурсов" в виде disposables.dispose(). dispose должен быть только вне цепочки. Тем более, что неизвестно, что ты напихал ещё в этот disposable. Зафейлилась одна цепочка - и всё, работа встала полностью, потому что больше ничего ты в этот disposables запихать не сможешь. clear() надо вызывать в случае, когда тебе нужно очистить CompositeDisposable.
    .flatMap{ Observable.fromIterable(it)} это вообще что за дичь бессмысленная? просто удали эту строку и ничего не изменится.
    Обычно методы типа getVideos что-то возвращают. В твоем случае это должен быть по ситуации Observable/Single.
    .onErrorReturnItem(mutableListOf(Video("ErrorId")))
    Дичь. Мутабельные данные в стриме - путь в никуда. Только иммутабельные. ErrorId? Orly? Сделай ты sealed класс, в конце концов.
    Почитай про SOLID, этот твой метод делает слишком много всего.
    Ответ написан более двух лет назад
    1 комментарий
    1 комментарий
  • Как включить загрузчик Grub при старте Ubuntu?

    unseriously @unseriously
    Итого: что сейчас происходит при загрузке компа - что показывается, до какого момента доходит загрузка? После того, как комп загрузился, можно нажатием клавиш CTRL+ALT+F1 или F2...F6 - перейти в виртуальный терминал - залогиниться в систему и оттуда, например, установить/восстановить груб, как это сделать легко нагуглить.
    После чего вообще произошло?
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Нужны ли эмуляторы для Android разработки?

    alekseyHunter
    alekseyHunter @alekseyHunter
    Android developer
    Скажите, насколько необходимо запускать эмуляторы со всеми версиями Android в реальной промышленной разработке?

    Android Studio подсказывает, если используешь метод, который поддерживается с версией выше, чем текущая минимальная. Поэтому почти всегда заменяю такие методы, чтобы не тестировать на разных смартах.
    Эмуляторы полезны для подгона UI к разным размерам устройств. Например, сейчас делаю Custom View, размеры отступов у внутренних блоков зависят от общего количества dp на смарте. На стандартных HD, Hd+, Full HD все корректно обрабатывает, а на кастомных размерах - нет. Спасибо создателям смартов xD

    эмуляторы очень сильно тормозят начиная с Android 6.0.

    Это норма. Слабый проц, мало оперативки выделено под эмулятор. У меня летает на i5-9600k + 16gb ddr4 2600 МГц.

    боюсь, что ноут пыхнет.

    Ну, пыхнуть - не пыхнет, но при хорошей нагрузке может синий экран появится, если охлаждение не справится.
    Засеки временя на крафт релизных билдов с оптимизацией кода. У меня ~2 минуты с 5 проходами.

    Если нужны несколько эмуляторов, в Firebase можно бесплатно прогонять до 10 виртуальных устройств и 5 физических, с разными версиями оси и размерами экрана.
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
Оценили как «Нравится»
  • 1
  • 2
  • Следующие →
Самые активные сегодня
  • vabka
    Василий Банников
    • 9 ответов
    • 0 вопросов
  • rPman
    • 6 ответов
    • 0 вопросов
  • CityCat4
    CityCat4
    • 6 ответов
    • 0 вопросов
  • mayton2019
    • 5 ответов
    • 0 вопросов
  • borisserver
    Субару Помнеш
    • 5 ответов
    • 0 вопросов
  • saboteur_kiev
    Saboteur
    • 4 ответа
    • 0 вопросов
  • © Habr
  • О сервисе
  • Правила
  • Обратная связь
  • Блог

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации