Size: a a a

Android Developers

2020 March 16

I

Ivansuper in Android Developers
Astar
Не ну это понятно. У меня на id есть PrimaryKey, но другие поля все равно могут быть одинаковыми у двух или нескольких записей..
Погугли Android Room Unique
источник

AC

Arsen CeH9 in Android Developers
Георгий Авакян
в том то и дело что все отрабатывает, тосты логи, даже log самого метода отработал, но он не отработал, метод с отрисовкой связан, и получается что он быстрее срабатывает чем отрисуется вью
скорее всего какая-то ошибка в твоем коде, с фреймворком вроде все плюс минус норм
источник

A

Aniki in Android Developers
А есть четкое объяснение в чем была проблема асинктаска?
источник

I

Ivansuper in Android Developers
Спорная гибкость предоставленного апи
источник

DE

Denis Egorov in Android Developers
Aniki
А есть четкое объяснение в чем была проблема асинктаска?
1. Многословность
2. Стремное API
источник

VU

Vadim Uzbekov in Android Developers
Denis Egorov
1. Многословность
2. Стремное API
3. Несоответсвие принципам SOLID
4. Легко получить утечки памяти
источник

DE

Denis Egorov in Android Developers
Vadim Uzbekov
3. Несоответсвие принципам SOLID
4. Легко получить утечки памяти
3. Какому именно принципу?
4. Так же, как и с другими инструментами для асинхронности)
источник

VU

Vadim Uzbekov in Android Developers
3. Single responsibility
4. Ок ладно, тогда:
5. Все асинктаски работают на одном потоке
источник

Sergey λ in Android Developers
5 можно менять
источник

DE

Denis Egorov in Android Developers
Vadim Uzbekov
3. Single responsibility
4. Ок ладно, тогда:
5. Все асинктаски работают на одном потоке
где он нарушает этот принцип?
Их можно запустить на разных потоках
источник

VU

Vadim Uzbekov in Android Developers
Чем плох AsyncTask?

Все знают, что AsyncTask – это плохо и лучше его не использовать. На собеседовании могут спросить, почему это так.

1. Для того, чтобы использовать AsyncTask, нужно создать наследника этого класса. Использование через наследование требует написание бойлерплейт кода и не является гибким механизмом.

2. AsyncTask нарушает принцип единственной ответственности, т.к. выступает и классом, который выполняет бэкграунд задачу, и коллбэком, получающим результат.

3. Неудачный API. Часто работа с бэкграунд тредом в андроид-приложениях – это запрос в сеть или базу данных. Для обработки результата достаточно методов onSuccess() и onError(). AsyncTask предоставляет обычно ненужные коллбэки onPreExecute() и onProgressUpdate(), а также метод onPostExecute(), который вызывается в случаях и успешного выполнения, и ошибки. Это требует писать больше бойлерплейта.

4. На разных версиях андроида выполнение нескольких AsyncTask реализовано по-разному:
   
   • До Api level 4 использовался единственный тред и все AsyncTask выполнялись по очереди.
   • Начиная с Api level 4 и до 11 использовался тред пул и AsyncTask выполнялись параллельно.
   • Начиная с Api level 11 снова начали использовать единственный тред.

   Такие изменения вызывали путаницу и баги в приложениях.

#OS
источник

Sergey λ in Android Developers
> Использование через наследование требует написание бойлерплейт кода и не является гибким механизмом.
AAAAAaa...
источник

SK

Stanislau Karaleuski in Android Developers
Ребята, кто работал с новым Billing Client? При инициализации ссылаюсь на текущий активити. Приложение падает. billingClient = BillingClient.newBuilder(this).setListener(this).build();
источник

КЧ

Константин Чайко... in Android Developers
Stanislau Karaleuski
Ребята, кто работал с новым Billing Client? При инициализации ссылаюсь на текущий активити. Приложение падает. billingClient = BillingClient.newBuilder(this).setListener(this).build();
наверное надо посмотреть ошибку ?
источник

DE

Denis Egorov in Android Developers
Vadim Uzbekov
Чем плох AsyncTask?

Все знают, что AsyncTask – это плохо и лучше его не использовать. На собеседовании могут спросить, почему это так.

1. Для того, чтобы использовать AsyncTask, нужно создать наследника этого класса. Использование через наследование требует написание бойлерплейт кода и не является гибким механизмом.

2. AsyncTask нарушает принцип единственной ответственности, т.к. выступает и классом, который выполняет бэкграунд задачу, и коллбэком, получающим результат.

3. Неудачный API. Часто работа с бэкграунд тредом в андроид-приложениях – это запрос в сеть или базу данных. Для обработки результата достаточно методов onSuccess() и onError(). AsyncTask предоставляет обычно ненужные коллбэки onPreExecute() и onProgressUpdate(), а также метод onPostExecute(), который вызывается в случаях и успешного выполнения, и ошибки. Это требует писать больше бойлерплейта.

4. На разных версиях андроида выполнение нескольких AsyncTask реализовано по-разному:
   
   • До Api level 4 использовался единственный тред и все AsyncTask выполнялись по очереди.
   • Начиная с Api level 4 и до 11 использовался тред пул и AsyncTask выполнялись параллельно.
   • Начиная с Api level 11 снова начали использовать единственный тред.

   Такие изменения вызывали путаницу и баги в приложениях.

#OS
2 пункт абсолютно не понятен. Кто тогда должен получить коллбэк с результатом?)
источник

QH

Quantum Harmonizer in Android Developers
Переслано от Quantum Harmonizer
а, хотя нет, не согласен
new SimpleAsyncTask<String>(
   () -> "from background",
   (str) -> Toast
       .makeText(ctx, str, LENGTH_SHORT).show()
);
источник

AD

Aleksey D. in Android Developers
Vadim Uzbekov
Чем плох AsyncTask?

Все знают, что AsyncTask – это плохо и лучше его не использовать. На собеседовании могут спросить, почему это так.

1. Для того, чтобы использовать AsyncTask, нужно создать наследника этого класса. Использование через наследование требует написание бойлерплейт кода и не является гибким механизмом.

2. AsyncTask нарушает принцип единственной ответственности, т.к. выступает и классом, который выполняет бэкграунд задачу, и коллбэком, получающим результат.

3. Неудачный API. Часто работа с бэкграунд тредом в андроид-приложениях – это запрос в сеть или базу данных. Для обработки результата достаточно методов onSuccess() и onError(). AsyncTask предоставляет обычно ненужные коллбэки onPreExecute() и onProgressUpdate(), а также метод onPostExecute(), который вызывается в случаях и успешного выполнения, и ошибки. Это требует писать больше бойлерплейта.

4. На разных версиях андроида выполнение нескольких AsyncTask реализовано по-разному:
   
   • До Api level 4 использовался единственный тред и все AsyncTask выполнялись по очереди.
   • Начиная с Api level 4 и до 11 использовался тред пул и AsyncTask выполнялись параллельно.
   • Начиная с Api level 11 снова начали использовать единственный тред.

   Такие изменения вызывали путаницу и баги в приложениях.

#OS
пункт №4 устарел
источник

AB

Anton Bikbaev in Android Developers
Stanislau Karaleuski
Ребята, кто работал с новым Billing Client? При инициализации ссылаюсь на текущий активити. Приложение падает. billingClient = BillingClient.newBuilder(this).setListener(this).build();
В доке написано что нужно булевый флаг поставить
источник

VU

Vadim Uzbekov in Android Developers
Aleksey D.
пункт №4 устарел
да и сам AsyncTask тоже Deprecated
источник

QH

Quantum Harmonizer in Android Developers
Aleksey D.
пункт №4 устарел
Почему же?
источник