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

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

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

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

20.10.2015, 20:10. Просмотров 241. Ответов 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     Как реализовать бесконечный цикл в потоке?
Посмотрите здесь:

Как получить значение 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
Значит имеется некая активность, которая запускает сервер по нажатии кнопки, этот сервер в свою очередь запускает выполнение своей фоновой...

Сделать бесконечный CountDownTimer - Программирование Android
Использую CountDownTimer он в моем случае удобней обычного Timer, но проблема в том , что время его работы ограничено как 990000000, можно...

Как реализовать? - Программирование Android
Вопрос в следующем, нужно сделать, программу, которая при вводе, числа ну например 10, выводила на экран, документ с таким же номером...

Как реализовать проект - Программирование Android
Не знаю даже в какую ветку писать, модератор перенеси если что :) В общем есть у меня sdr приемник, он умеет читать данные с моего...

Как реализовать список - Программирование Android
Здравствуйте,помгите реализовать список ExpandableListView. Есть БД sqlite в ней таблица примера: id name data 1 вася 01.11.2015 ...

Как это реализовать? - Программирование Android
У меня ошибка, сверху Линеар и снизу линеар! а посередине ФреймЛейоут и на нем одна кнопка! Получается кнопка на Верхнем Линеаре то есть...

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

Как реализовать поиск по Listview? - Программирование Android
Listview adapter public class ListViewAdapter extends BaseAdapter { TextView theme; TextView contacts; TextView...

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

Как реализовать масштабирование рисунка? - Программирование Android
Здравствуйте. Нужно нарисовать схему объекта, аналогия как в дубль гисе, чтобы при увеличении масштаба выводился текст(названия объектов)....


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
bastrakov
91 / 91 / 14
Регистрация: 10.10.2015
Сообщений: 307
Записей в блоге: 1
22.10.2015, 08:28     Как реализовать бесконечный цикл в потоке? #2
SoundPool точно не подходит, он для множества коротких файлов был придуман.
а вот почему Ваш поток рубят - это вопрос. этот код из основного приложения или сервис?
Valakin
430 / 96 / 15
Регистрация: 21.02.2015
Сообщений: 729
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
Сообщений: 729
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     Как реализовать бесконечный цикл в потоке?
Ответ Создать тему
Опции темы

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