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

Автоповорот запускает несколько раз activity - Android

Восстановить пароль Регистрация
 
Fa
0 / 0 / 0
Регистрация: 16.09.2015
Сообщений: 7
16.09.2015, 01:51     Автоповорот запускает несколько раз activity #1
В приложении воспроизводиться звук с помощью MediaPlayer при срабатывании определенных событий. Если перевернуть телефон то звук начинает двоиться, троиться и так далее. Как будто оно множит основное activity / В чем может быть проблема подскажите?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.09.2015, 01:51     Автоповорот запускает несколько раз activity
Посмотрите здесь:

Несколько Activity в одной вкладке TAB Android
Из одного Activity получить значение другого Activity Android
Из одной Activity запустить функцию другой Activity Android
Как вызвать Activity не из Activity? Android
Android TextToSpeech, как вызвать speak несколько раз подряд?
Не все окна реагируют на автоповорот. Можно ли исправить? Android
Android Приложение зависает, если свернуть и развернуть Activity или перейти на другую Activity
Android Android - Передача данных с одного Activity на другое Activity
Изменение layout-элементов одного activity из другого activity Android
Создание Activity в другом Activity Android
Android Вызвать из одной activity функцию другой activity
Android Вывод activity в activity

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mikalai
248 / 224 / 91
Регистрация: 11.01.2015
Сообщений: 642
16.09.2015, 01:59     Автоповорот запускает несколько раз activity #2
При смене ориентации экрана activity пересоздается. Может быть в этом проблема.
Fa
0 / 0 / 0
Регистрация: 16.09.2015
Сообщений: 7
16.09.2015, 02:22  [ТС]     Автоповорот запускает несколько раз activity #3
после того как прописал в манифесте android:launchMode="singleInstance" убрались запуски одного и того же приложения) думал для автоповорота тоже поможет, а нет.

Даже если бы активити пересоздавалось то я по завершении воспроизведения удаляю звук.
Java
1
2
3
nextPointMediaPlayer.setOnCompletionListener(new OnCompletionListener() {
                                            public void onCompletion(MediaPlayer mp) {
                                                mp.release();
но он все равно троиться при поворотах(

как будто на фоне работает 10 приложений одновременно(
sskdroid
8 / 8 / 3
Регистрация: 03.03.2015
Сообщений: 68
16.09.2015, 05:19     Автоповорот запускает несколько раз activity #4
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
27
28
29
30
public class AudioPlayer {
    private MediaPlayer mPlayer;
 
    public void stop() {
        if (mPlayer != null) {
            mPlayer.release();
            mPlayer = null;
        }
    }
 
    public void play(Context c) {
        stop();
        mPlayer = MediaPlayer.create(c, R.raw.m);
        mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            public void onCompletion(MediaPlayer mp) {
                stop();
            }
        });
 
        mPlayer.start();
    }
 
    public void pause() {
        if(mPlayer.isPlaying()){
            mPlayer.pause();
        }else {
            mPlayer.start();
        }
    }
}
"В методе play(Context) вызывается метод MediaPlayer.create(Context, int).
Объект Context нужен MediaPlayer для опознания идентификатора ресурса аудиофайла.
(Также существуют другие методы MediaPlayer.create(…), используемые
при получении аудио из других источников, например из Интернета или по ло-
кальному URI.)

В методе AudioPlayer.stop() экземпляр MediaPlayer освобождается, а полю mPlayer
присваивается null. Вызов MediaPlayer.release() уничтожает экземпляр.

Уничтожение кажется слишком агрессивной интерпретацией «остановки», но для
этого есть веские причины. Класс MediaPlayer удерживает аудиооборудование
и другие системные ресурсы до вызова release(). Эти ресурсы совместно ис-
пользуются всеми приложениями. Класс MediaPlayer включает метод stop() для
перевода экземпляра MediaPlayer в остановленное состояние, из которого он может
быть перезапущен. Однако при простом воспроизведении аудиоданных корректнее
уничтожить экземпляр вызовом release(), а потом создать его заново.

Простое правило: удерживайте ровно один экземпляр MediaPlayer и только на то
время, в котором он что-то воспроизводит.

Для соблюдения этого правила мы внесем пару изменений в play(Context). Добавьте
исходный вызов stop() и заставьте слушателя вызывать stop() при завершении
воспроизведения."

===================

из книги Б. Харди, Б. Филлипс. Программирование под Android. Для профессионалов.

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

Добавлено через 1 минуту
"Класс MediaPlayer может продолжить воспроизведение после уничтожения HelloMoonFragment,
потому что MediaPlayer работает в другом программном потоке
(thread). Сейчас мы намеренно игнорируем этот многопоточный аспект HelloMoon.
Управление потоками более подробно рассматривается в главе 26."

===

а вот еще какой момент есть
Minor946
5 / 5 / 1
Регистрация: 08.04.2015
Сообщений: 17
16.09.2015, 09:13     Автоповорот запускает несколько раз activity #5
Делаю проект с видео проигрывание, и тоже при повороте экрана пересоздавалась активити, помогло добавить в манифесте строчку
XML
1
android:configChanges="orientation|screenSize"
Fa
0 / 0 / 0
Регистрация: 16.09.2015
Сообщений: 7
16.09.2015, 11:42  [ТС]     Автоповорот запускает несколько раз activity #6
Спасибо за развернутые ответы. Буду пробовать.
Yandex
Объявления
16.09.2015, 11:42     Автоповорот запускает несколько раз activity
Ответ Создать тему
Опции темы

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