foonfyrick, выделение ресурсов занимает сравнительно много времени. Потоки нужно переиспользовать.
у меня будут 2 варианта кода, как я пойму какой дороже?
Для этого и надо знать всё то, что спрашивают на собеседованиях. Алгоритмы. Сырые треды. Детали реализации JVM. И так далее, и тому подобное.
Если ты придешь ко мне на собеседование, расскажешь, что используешь корутины, но не будешь понимать, как они работают, и не будешь понимать, что внутри Dispatchers.Default тредпул, и не будешь знать, что такое тредпул, то считай, что корутины ты не знаешь.
foonfyrick, да, это сырой поток. Гугли, ключевые слова я дал.
Ещё раз - да, нужно выносить код в бекграунд треды. Нет, не нужно делать Thread{}.start(). Создание и старт потока это дорого. Пул потоков, и дальнейшие обертки над ним. Вчитывайся в то, что я тебе написал.
100мс это много, кадр мейнтреда это 16мс. 6-7 кадров пропуска. Такой лаг пользователь уже увидит.
foonfyrick, тебе Roman Kitaev правильно указал. Да, надо делать в бекграунде. Но создавать потоки самому не надо. Потому что это сложно. На сырых потоках вообще никто никогда ничего не пишет (тем не менее, знать их надо, вот такой финт ушами).
Это могут быть шедулеры в RxJava. Там внутри пулы потоков.
Это могут быть диспетчеры в корутинах.
Там внутри тоже пулы потоков. Потому что JVM ничего про корутины на данный момент не знает.
Ходить в сеть стоит через OkHttp и Retrofit. Там есть асинхронные вызовы, и отдельно никакие потоки переключать не надо.
turbolizard, зависит от твоих задач. Ты хочешь примеры? Сходить в два разных сервиса, смержить результат, и после этого раз в 5 секунд ходить в третий сервис, результаты склеивать по определенным правилам. Если где-то что-то сфейлилось, начинать всё заново с линейно увеличивающейся задержкой.
Александр,
"Метод должен быть воспроизводимым, т.е. при выпадении определенно хэша, должен выдавать ту же позицию в массиве каждый раз, когда выпадает этот хэш"
Это невозможно обеспечить при таких условиях.
foonfyrick, arguments это get/setArguments фрагмента. Если ты ничего туда не просеттишь, то там ничего и не будет. В твоём случае это аргументы фрагмента с2.
foonfyrick, сначала добавь оба фрагмента, потом ставь таргет. Фрагменты добавляются асинхронно, поэтому к моменту вызовов методов жизненного цикла таргет уже будет проставлен.
foonfyrick, Ну естественно у тебя так ничего работать не будет, ты добавляешь один инстанс ChildFragment1(), а таргет ставишь другому ChildFragment1().setTargetFragment(ChildFragment2(),1).
Никакие аргументы туда и не будут приходить, это способ взаимодействия. Дальше ты должен сделать что-то типа
Для этого и надо знать всё то, что спрашивают на собеседованиях. Алгоритмы. Сырые треды. Детали реализации JVM. И так далее, и тому подобное.
Если ты придешь ко мне на собеседование, расскажешь, что используешь корутины, но не будешь понимать, как они работают, и не будешь понимать, что внутри Dispatchers.Default тредпул, и не будешь знать, что такое тредпул, то считай, что корутины ты не знаешь.