Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

20.10.2015, 20:10. Просмотров 273. Ответов 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(); не на что не влияет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.10.2015, 20:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как реализовать бесконечный цикл в потоке? (Программирование Android):

Как получить значение String из UI потока в потоке AsyncTask? - Программирование Android
Есть 4 шт. EditText. Нужно получить их значения в потоке AsyncTask. Вот весь мой код package com.examplemy.activity2; ...

Как отменить выполнение кода в сервисе, который запущен в отдельном потоке? - Программирование Android
Здравствуйте! Есть код класса, наследующего Service public int onStartCommand(Intent intent, int flags, int startId) { tTask = new...

Как из одного потока вызвать метод таким образом, чтобы он выполнялся в другом потоке - Программирование Android
Значит имеется некая активность, которая запускает сервер по нажатии кнопки, этот сервер в свою очередь запускает выполнение своей фоновой...

Как реализовать бесконечный цикл While, но чтобы этот цикл не грузил процессор? - Visual C++
Допустим есть цикл: while (1) { ... } Как сделать так, чтобы бесконечный цикл не грузил процессор. Избавиться от...

Как правильно реализовать бесконечный цикл? - C#
Господа, такой вопрос. Я совсем ещё нуб в шарпе, да и в программировании собственно тоже )) Как наиболее красиво можно собрать...

.NET 3.x Бесконечный цикл в потоке, StackOverflowException - C#
Мне нужна рекурсия в отдельном потоке, перебирающая делегаты и вызывающая их в соответствии с секундомером. При работе более 10 секунд...

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

бесконечный цикл в отдельном потоке - C#
Здравствуйте! Помогите пожалуйста решить проблему. Есть метод relayStatus. Данный метод опрашивает определенное устройство путем...

Бесконечный цикл или как? - PHP БД
Товарищи, подскажите, как лучше реализовать. К примеру есть таблица `table` id_a | id_b 1 | 0 2 | 1 3 | 2 4 | 1 5 | 3 6...

Как организовать бесконечный цикл? - C (СИ)
Нужно сделать так, чтобы бесконечно показывал текст "Hi!" #include <stdio.h> void main (void) { HI:do { ...

Как создать бесконечный цикл - C++
Не могу создать бесконечный цикл, для проверки символов вводимых пользователем. Нужно чтобы при вводе букв выдавалось ошибка, что можно...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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