• У кого есть опыт разработки iOS/macOS приложений в Xcode запущенной на VirtualBox в Windows/Linux?

    danial72
    @danial72
    flutter dart.
    Используй flutter: он проще. Разработка под виндой, отладка на Android, потом отлаженный код собираешь в виртуальной машине с исккодом. Потом собираешь и льёшь в аппстор. Так и работаем :-) главное Mojave’s не использовать
    Ответ написан
    1 комментарий
  • Как заставить главный поток подождать CallBack при использовании Retrofit?

    @snitron
    Учуcь программировать на Android, IOS и Unity.
    Вы вызываете изначально запрос асинхронно методом enqueue(). Чтобы запустить синхронно - используйте метод execute(). Но, насколько я знаю, Android не даст вам отправить запрос в UI потоке.

    P.S.
    Я бы пересмотрел архитектуру приложения и вместо возвращения полученного значения в методе (через return), например, прямо в callback'е вызывал бы другой метод, в который уже пришёл бы ответ.

    Также можно оформить всё это красивей через RxJava+RxKotlin или корутины.
    Ответ написан
    Комментировать
  • Как подключить десериализатор к Retrofit, использующий Gson?

    zagayevskiy
    @zagayevskiy Куратор тега Android
    Android developer at Yandex
    В зависимости добавить
    implementation 'com.squareup.retrofit2:converter-gson:2.1.0'

    А когда создаёшь билдер ретрофита, вызови addConverterFactory(GsonConverterFactory.create(gson))

    Подробнее
    Ответ написан
    Комментировать
  • Как исправить коммит если он уже отправлен в GitHub?

    New_Horizons
    @New_Horizons
    Бред:
    git push --force

    Делай осознанно, особенно если работаешь в репо не один.

    Вот хорошая цитата с оф сайта насчёт изменения коммитов в репо:

    Не перемещайте коммиты, уже отправленные в публичный репозиторий

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

    MarcusAurelius
    @MarcusAurelius
    автор Impress Application Server для Node.js
    А сам код синхронным не называется, это его по ошибке или для упрощения так называют. Синхронным и асинхронным называется только API ввода-вывода, т.е. операции, прерывающие исполнение кода и требующие от системы обратиться к внешнему устройству, работающему не синхронно с центральным процессором. Операции ввода-выдвода, каковые есть: работа с дисками, портами, контроллерами, периферийными устройствами, как клава, мыша, тачскрин, разные датчики, вебкамера, сетевые карты, блютузы и другие радиомодули, принтеры, видеокарты и прочее. Все они получают задание от программы, и исполняют его отдельно, своими мощностями. Потом внешние устройства присылают программе сигнал о статусе исполнения и, возможно, полученные данные. Программа все это время может ждать (если у нее синхронное API, т.е. блокирующее) или что-то делать (если асинхронное, т.е. не блокирующее). Если программа ждет, не переходит к выполнению следующего действия, то это синхронный ввод-вывод, потому, что осуществляется процесс синхронизации программы с внешним устройством. Внешне устройство посылает прерывание, которое обрабатывает операционная система и через несколько слоев драйверов оно попадает в программу, обычно в виде колбека или события. Если программа ждала, то вызов API не завершался, она все время слушала, когда придет событие о завершении операции ввода вывода, а получив его API отдает ответ и управление переходит к следующей команде, что и называется, синхронизацией с периферийным устройством. Если программа не ждала, то вызов API сразу завершается и не блокирует поток выполнения программ, это называется асинхронным API, потому, что процесс синхронизации не происходит явно, а ответы возвращаются через события.
    Ответ написан
    3 комментария
  • Почему получают доступ к контексту через MainActivity.this?

    @terminator-light
    В этом и заключается суть наслеования. Если класс B наследуется от A, то A - это родитель класса B, а B - потомок A. Пускай даже если C будет наследоваться от B, то он не перестанет быть потомком класса A, просто для класса B он будет прямым потомком.
    Если какой-то метод требует объект класса Context, то можно будет передавать любые потомки класса Context. А MainActivity - потомок Context, поэтому он подойдет.
    Я не получил ссылку ни на внешний класс, не на класс родитель.

    class C extends B{
    
        class D {
            public void method(){
                System.out.println(C.this.toString()); // C.this - ссылка на внешний класс, т.е. на C
                System.out.println(super.toString()); // super или D.super - ссылка на родительский класс,
                // т.е. на Object, т.к. по умолчанию все классы наследуются от Object
            }
    
            @Override
            public String toString() {
                return "D";
            }
        }
    
        @Override
        public String toString() {
            return "C";
        }
    }
    Ответ написан
    Комментировать
  • Почему получают доступ к контексту через MainActivity.this?

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    Контекст активити а андроид как проперти активити нужен для простого обращения из наследников классов обработчиков событий..

    Вместо this мне нравится context.
    В конструкторе присваивается ссылка на саму себя.

    И в онкреате можно писать обработчики через анонимные классы.
    Ответ написан
    Комментировать
  • Что происходит после нажатия кнопки(вопрос с собеседования)?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Зависит от операционной системы. Если грубо и обобщённо, то:
    1. Контроллер мыши посылает сигнал процессору;
    2. Процессор вызывает прерывание;
    3. Обработчик прерывания в ядре операционной системы шлёт сигнал графической подсистеме;
    4. Графическая подсистема проверяет где находился курсор в момент возникновения сигнала;
    5. Графическая подсистема пишет сообщение в очередь того окна, координаты которого совпадают с координатами курсора;
    6. Графическая библиотека приложения в цикле считывает сообщения из очереди, обрабатывает их, создаёт соответствующие события и передаёт соответствующим слушателям;
    7. Слушатель выполняет ваш обработчик нажатия кнопки.
    Ответ написан
    Комментировать
  • Возможна ли обработка на клиенте Spring Framework?

    @koperagen
    Если не хотите изучать новые языки, возможно вам подойдет Vaadin. Этот фреймворк позволяет писать web приложение полностью на Java, в том числе исполнять какую-то логику на клиенте. В Spring, насколько мне известно, такой возможности нет
    Ответ написан
    1 комментарий