Comments 5
Я так понимаю задача MyTask — отложенное выполнение кода (изменение громкости). Если так, то это ужасное решение и антипаттерн.
Один из вариантов правильного решения — использовать Handler.
Почему так — ну тут лучше самому почитать больше о многопоточности.
Один из вариантов правильного решения — использовать Handler.
Почему так — ну тут лучше самому почитать больше о многопоточности.
Я не специалист по программировамированию на андроид, учусь в основном на примерах, спасибо за идею!
Согласен с коментарием выше. Никогда не используйте sleep для таких целей. Есть таймер или, как выше сказано, Handler.
Согласен с r_ii за тем лишь исключением, что неплохо было бы всё таки объяснить, почему же решение является ужасным. Использовать в данном случае AsyncTask — это всё равно, что стрелять из пушки по воробьям. Данный класс предназначен для выполнения кода в другом потоке. Все методы класса, кроме doInBackground(Params...), выполняются в главном потоке приложения. В вашем AsyncTask'е, единственное, что выполняется в рабочем потоке — его остановка на 1 секунду для последующего отложенного выполнения кода в основном потоке — нерационально. Обратите внимание на класс Handler, который используется авторами приложения для отложенного завершения работы сервиса.
There are two main uses for a Handler: (1) to schedule messages and runnables to be executed as some point in the future; and (2) to enqueue an action to be performed on a different thread than your own.Вам понадобятся методы postDelayed(java.lang.Runnable, long) и removeCallbacks(java.lang.Runnable).
Sign up to leave a comment.
Модифицируем плеер Vanilla Music под Android