2012-05-06 4 views
1

Я создал музыкальный сервис для своего приложения (музыкальный плеер), и после некоторых тестов я наблюдаю за поведением, которое вызывает у меня головную боль, поскольку я не знаю, как его решить.Музыкальный сервис останавливается, когда активность остановлена ​​/ закрыта?

В целях тестирования я изменил сервис, поэтому, как только он запущен, он воспроизводит определенный mp3-файл с моей SD-карты. Кроме того, я изменил приложение, так что началось первое действие, он запускает службу, а затем вызывает «finish()».

ОК, поэтому ... Я запускаю приложение, и начинается первое действие, начинается моя работа и воспроизведение музыки, завершение действия и закрытие приложения ... ... музыка остановлена ​​и через несколько секунд служба перезагружается (я использую флаг START_STICKY, поэтому я полагаю, что это нормально).

Я не хочу, чтобы музыка останавливалась при закрытии приложения, или, другими словами, я не хочу, чтобы служба была остановлена ​​(а затем перезапущена, потому что она была остановлена), когда мое приложение закрыто.

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

Любые идеи?

Спасибо!

EDIT:

Это пример того, что мое приложение и сервис делают (в тестах я делаю).

активность:

public class FirstActivity extends SherlockFragmentActivity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     startService(new Intent(this, MyService.class)); 

     ... 
     // Here is a postDelayed that will run after 2 seconds and call finish() 
    } 
} 

Услуги:

public class MyService extends Service { 
    private MediaPlayer mPlayer; 

    @Override 
    public void onCreate() { 
     mPlayer = new MusicPlayer(this); 
    } 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
     // Here is the code that plays the music using MediaPlayer 

     return START_STICKY; 
    } 
} 
+0

Друг, который кодирует приложение со мной, не экспериментирует с таким же поведением. Для него это прекрасно работает. Может быть, моя проблема связана с HTC Sense? (У меня есть HTC One S). –

+0

Пример кода поможет указать, что вы делаете – Blundell

ответ

2

не забудьте положить, что служба удаленного в вашем манифеста приложения тег:

<service 
    android:name="somepackage.PlayerService" 
    android:label="Player Service" 
    android:process=":remote"/> 

Примечание, что remote имя может быть чем-то другим, поэтому у вас может быть несколько служб, которые не связанный с основным процессом приложения

+0

Собирайтесь попробовать это как можно скорее. К сожалению, мне понадобится некоторое время, когда я потерял код музыкального сервиса (и у меня не было копии нового кода). Благодаря! –

+0

, если вам нужен рабочий пример, я успешно использовал его в проекте моего мод-игрока https://github.com/josef-jelinek/tiny-mod-player/tree/master/app.gamod-player/src/gamod/ клиент –

+0

Работает как очарование! Спасибо за ваше решение :) –

Смежные вопросы