169 похожих чатов

Всем привет, такой вопрос Запускаю MediaPlayer в Asynctask но проигрывается

с задержкой. В чем может быть проблема, кто-то знает?
Заранее спасибо

13 ответов

7 просмотров

AsyncTask не стоит использовать, он deprecated. Как проявляется задержка проигрывания?

Алексей- Автор вопроса

На воркеров переходить? Звука, который должен проиграться, просто нет, а потом проигрывается сразу несколько раз

Mediaplayer вроде из основного потока умеет работать. Для чего его нужно заворачивать в отдельный поток?

Алексей- Автор вопроса

У меня пищалка, при изменении координат проигрывает звук. Координаты читаю через onLocationChanged и запускаю проигрывание

Хорошо, но зачем AsyncTask?

Алексей- Автор вопроса

OnLocationChanged слишком часто вызывается

AsyncTask из onLocationChanged вызывается каждый раз?

Алексей- Автор вопроса

Да (понимаю что это не очень хорошее решение, но умнее ничего не придумал)

Я так понимаю, что каждый раз при этом создаётся новый AsyncTask? В таком случае получается, что вы перегружаете систему кучей потоков, каждый из которых пытается сыграть звук.

Алексей- Автор вопроса

Перекинул воспроизведение в onLocationChanged вроде заработало, спасибо)

Достаточно иметь 1 объект Mediaplayer. Можно ещё добавить проверку интервала, чтобы играло не чаще, чем нужно.

Exoplayer юзай и что-то получше Асинктаск.

Ему на самом деле не нужно было ни то, ни другое. Он через асинхрон пытался вылечить то, что вызывал проигрывание звука очень часто. В итоге только хуже сделал, нагружая систему кучей потоков, вместо того, чтобы тупо вызывать проигрывание реже. Но вроде разобрались вчера.

Похожие вопросы

Обсуждают сегодня

Вопрос по диагностике ошибок (я знаю в чем, в данном конкретном примере, я знаю, как исправить, пример модельный, понятно, что в реальности бывает намного запутаннее). module...
ⰄⰎⰋⰐⰐⰑⰛⰤⰧⰧⰩⰄ ⰊⰑⰁⰓⰡⰛⰦⰕⰫ
10
А дальше что?.. Записать в файл, потом в Код?.. И потом разбирать как-то?..
Хаскель Моисеевич Гопник
14
А чем вам питонисты не угодили?😂
.
79
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
48
type TObj = object procedure Init; virtual; end; TObj1 = object(TObj) procedure Init; override; end; procedure TObj1.Init; begin inherited; end; procedur...
Alexander 👋
29
Есть предложения, как подобное можно упростить?
Hemul GM
12
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
86
@y0zhig @shizzard А можно я опишу цель и может вообще ерланг мне не подходит. На текущий момент как я понимаю у ерланга есть легковесные потоки и задача выполняется в каком т...
Дмитрий Спиридонов
5
У меня вопросик назрел. Почему, создав класс без наследования и реализации деструктора Destroy, деструктор не вызывался при free. Потом указал наследование от tobject и overri...
Сергей Бычков
9
Такой вопросец - есть функция function MySuperDuperConcat(const a: array of AnsiString): AnsiString; Как мне в её теле сделать вот так? Result:=Concat(a); А не грустный вариан...
notme
15
Карта сайта