Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
dodo55
0 / 0 / 0
Регистрация: 16.06.2014
Сообщений: 29
#1

Как реализовать бесконечный цикл в потоке? - Android

20.10.2015, 20:10. Просмотров 232. Ответов 5
Метки нет (Все метки)

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

Вот код:
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
MediaPlayer player;
Runnable runnable = new Runnable() {
    public void run() {
        try {
            while (true) {
                f = req(); // запрос
                if(f) loadMusic();
                TimeUnit.SECONDS.sleep(1);
            }
 
        } catch (InterruptedException e) {e.printStackTrace();}
    }
};
 
.    .     .    
Thread thread = new Thread(runnable);
thread.start();
.    .     .
 
void loadMusic() throws IOException {
    AssetFileDescriptor afd = mAssetManager.openFd("1.wav");
    MediaPlayer player = new MediaPlayer();
    player.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
    player.prepare();
    player.start();
}

Проблема в том, что через 20 секунд музыка перестаёт играть, хотя Без потока он работает в среднем 20 минут.
SoundPool пробовал - не подходит. Длительность мелодии от 5 до 26 секунд. Он примерно через 20 секунд замолкает на полуслове.
req(); не на что не влияет.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.10.2015, 20:10     Как реализовать бесконечный цикл в потоке?
Посмотрите здесь:

Android Как реализовать?
Как это реализовать? Android
Android Как реализовать смену картинок
Как из одного потока вызвать метод таким образом, чтобы он выполнялся в другом потоке Android
Android Как реализовать маркерованый список
Android Как получить значение String из UI потока в потоке AsyncTask?
Android Как отменить выполнение кода в сервисе, который запущен в отдельном потоке?
Как реализовать список Android
Как это реализовать? Android
Android Ребят, как реализовать ratingbar?
Как реализовать проект Android
Android Сделать бесконечный CountDownTimer

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
bastrakov
91 / 91 / 14
Регистрация: 10.10.2015
Сообщений: 307
Записей в блоге: 1
22.10.2015, 08:28     Как реализовать бесконечный цикл в потоке? #2
SoundPool точно не подходит, он для множества коротких файлов был придуман.
а вот почему Ваш поток рубят - это вопрос. этот код из основного приложения или сервис?
Valakin
430 / 96 / 15
Регистрация: 21.02.2015
Сообщений: 724
22.10.2015, 09:45     Как реализовать бесконечный цикл в потоке? #3
возможно ты постоянно создаешь player
что в принципе не правильно
или уничтожай его или создавай один раз
dodo55
0 / 0 / 0
Регистрация: 16.06.2014
Сообщений: 29
22.10.2015, 15:49  [ТС]     Как реализовать бесконечный цикл в потоке? #4
Я тоже так подумал... создал, но не чего не поменялось. Этот код для Activity. Пытался переписать код для Servis, но в результате приложение вылетает, через 15 секунд работы.
Valakin
430 / 96 / 15
Регистрация: 21.02.2015
Сообщений: 724
22.10.2015, 16:06     Как реализовать бесконечный цикл в потоке? #5
Цитата Сообщение от dodo55 Посмотреть сообщение
хотя Без потока он работает в среднем 20 минут
а потом что? приложение падает или перестает звучать wav?
dodo55
0 / 0 / 0
Регистрация: 16.06.2014
Сообщений: 29
22.10.2015, 19:43  [ТС]     Как реализовать бесконечный цикл в потоке? #6
падает
Yandex
Объявления
22.10.2015, 19:43     Как реализовать бесконечный цикл в потоке?
Ответ Создать тему
Опции темы

Текущее время: 14:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru