Сергій
> то нафиг тогда нужна функция симуляции геолокации в эмуляторе ну не геофенсами едиными )
Алексей
спасибо, буду исследовать.
Сергій
этот код https://developers.google.com/android/reference/com/google/android/gms/location/GeofenceStatusCodes.html#GEOFENCE_NOT_AVAILABLE
Вячеслав
Есть JSONObject, в нем есть значение допустим "name". Оно может быть null. Если делать jsonObject.getString("name"), то оно возращает не NULL, а "null" в виде строчки. Как адекватно проверять на нул ?
Вячеслав
а то не хочется каждое значение проверять на equals null))
Вячеслав
json.optString("name", null)
я так понял opt проверят есть ли такой параметр, если такого не существует, то нулл?
Сергій
второй параметр fallback
Сергій
что напишеш то и вернет
Dyno
а зачем нужны асинктаски если можно взять и реализовать Runnable? Или асинктаск типо удобнее, функциональнее?
Вячеслав
Вячеслав
второй параметр fallback
так не работает
Вячеслав
вот нужно сделать то же самое, только адекватно)))
David
почему?
отвечу вопросом на вопрос: как ты вернешь результат асинхронной операции в UI поток из любого другого потока?
Глеб
Сейчас уже не нужны.... если по простому - то runnable->туда->runnable->сюда последние студии, лямбды и java8 -уже имеют всё необходимое для лаконичной многопоточности
Сергій
только не делайте new Thread на каждый чих )
Глеб
только не делайте new Thread на каждый чих )
Угу, хотяб пару статик екзекьюторов завести (MAIN и WORK) - и ок!
Сергій
или HandlerThread 🌝
Aleksandr
люди пользуются экзекуторами
Dyno
отвечу вопросом на вопрос: как ты вернешь результат асинхронной операции в UI поток из любого другого потока?
я еще плаваю в вопросах. Ты о том, что асинктаски могут возвращать состояние, например, или какие-то пользовательские значения, да?
Aleksandr
когда белые дяди из западных стран уже придумали WorkManager
Сергій
Глеб
белые дяди любят "продавать впереди паровоза"
David
я еще плаваю в вопросах. Ты о том, что асинктаски могут возвращать состояние, например, или какие-то пользовательские значения, да?
боюсь проблема не в вопросах, но мы все когда-то плавали) в асинктаске есть 3 метода, и только один из них работает в бекграунде, остальные два в потоке. внутри там как раз скрыта передача данных между потоками и тебе не надо ее самому реализовывать
David
Хендлер же так долго писать, да?
конечно нет, но человек про асинктаски спрашивает
Андрей
конечно нет, но человек про асинктаски спрашивает
По факту с асинктаском когда будет увы больше к сожалению
David
По факту с асинктаском когда будет увы больше к сожалению
ну хендлера все равно не достаточно, надо ж еще поток и работу в нем прописывать
David
и как в чате правильно заметили, надо еще потоки экономить
Андрей
ну асинктаск на потоках точно не экономит
David
в асинктаск можно прокинуть екзекьютор
Андрей
по факту просто создает FutureTask внутри которого тред
Андрей
тред можно тоже в тред экзекьютор пихнуть
Андрей
и ограничить выполнение одним тредом
David
можно)
Андрей
а из треда можно всегда написать view.post(()->{ });
Андрей
это почему же?
а где там экономия если внутри тупо runnable в тред идет?
David
а из треда можно всегда написать view.post(()->{ });
а если мы экран перевернули во время выполнения задачи? правда асинктаск это тоже не решает...
Vladislav
в каком класе, в каком слое Clean architecture хранить текущее состояние активности? нужно сохранить list и оставшееся время countdown timer
Mike
AsyncTask, конечно, говно, но надо хоть в исходники заглядывать, чтобы утверждать это
Андрей
mWorker = new WorkerRunnable<Params, Result>() { public Result call() throws Exception { mTaskInvoked.set(true); Result result = null; try { Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND); //noinspection unchecked result = doInBackground(mParams); Binder.flushPendingCommands(); } catch (Throwable tr) { mCancelled.set(true); throw tr; } finally { postResult(result); } return result; } };
Андрей
mFuture = new FutureTask<Result>(mWorker) { @Override protected void done() { try { postResultIfNotInvoked(get()); } catch (InterruptedException e) { android.util.Log.w(LOG_TAG, e); } catch (ExecutionException e) { throw new RuntimeException("An error occurred while executing doInBackground()", e.getCause()); } catch (CancellationException e) { postResultIfNotInvoked(null); } } };
Dyno
в асинктаске
David
в асинктаске
синглтон чего? активити?
David
асинктаска
ты уверен что это решит проблему пересоздания активити?
Андрей
и? что из этого следует?
@MainThread public static void execute(Runnable runnable) { sDefaultExecutor.execute(runnable); }
Андрей
и где я тут не прав?
David
опа, екзекьютор!
Dyno
ты уверен что это решит проблему пересоздания активити?
пересоздания нет, но мы запускать поток будем прямо в конструкторе асинктаска и проверять если это первый запуск то запускаем, если второй - нет
Андрей
там не раннбл в тред идет по факту?
David
пересоздания нет, но мы запускать поток будем прямо в конструкторе асинктаска и проверять если это первый запуск то запускаем, если второй - нет
ооо, уже надо проверка! =) есть разные решения которые подходят под разные задачи, тут короткого ответа нет
Андрей
это что значит?
где экономия на потоках-то?
Игорь
Приветствую.Только через поиск нашел.Есть продвижения с приложением?
Dyno
запускать поток? в конструкторе асинктаска? Что это за дичь?
ну да, дичь, но все же :) так нельзя, я знаю, да))
Mike
где экономия на потоках-то?
А где расточительство? Объясни, как ты понимаешь простыню кода, которую скинул.
Dyno
догадываюсь)
Андрей
А где расточительство? Объясни, как ты понимаешь простыню кода, которую скинул.
если упростить, то асинктаск просто пихает runnable в executor (который опять же можно сделать и для обычных потоков, ровно как можно свой executor присвоить к асинктаску), а он выполняет это все соответственно заданной очереди
tridetch
Приветствую.Только через поиск нашел.Есть продвижения с приложением?
Да уже готово, правда в итоге я только на начальном этапе им занимался
Андрей
особого преимущества перед ThreadPoolExecutor не видно
Игорь
Да уже готово, правда в итоге я только на начальном этапе им занимался
Ясно.А данные с кассы отправлялись по апи?Была защита от обрывов связи?
Aleksandr
Всем привет. Считается ли нормальным инжектить контекст активити в фрагменты с помощью даггера?