2016-06-04 5 views
0

У меня проблема с моим сервисом. Дело в том, что когда он страдает, он разбивает все мое приложение. Отладочное приложение сообщило мне, что после этого он завершился после завершения процедуры «onCreate» (см. Мой код ниже). Кажется, что он даже не имеет доступа к onHandedIntent, но не уверен в этом! Я поставил свой код и журнал чуть ниже. Я проверил манифест, и это не проблема.Сбой при запуске IntentService при запуске

Спасибо за всю помощь

package com.example.pierr.puremusictest2; 
import android.app.IntentService; 
import android.content.Intent; 
import android.media.AudioManager; 
import android.media.MediaPlayer; 
import android.util.Log; 

import java.io.IOException; 

public class MusicPlayerService extends IntentService{ 
static MediaPlayer mPlayer; 
Intent gIntent; 
String url = "http://lolilol.890m.com/Musique/CapitalKings/II/Capital_Kings_-_Satellites_Official_Audio_Video-r8.aac"; 

public MusicPlayerService() { 
    super("mainThreadService"); 
    Log.i("blablabblablba","creation that's it2"); 
} 

public void onCreate(){ 
    Log.i("blablabblablba","creation that's it2"); 
    mPlayer = new MediaPlayer(); 
    mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
    Log.i("blablabblablba","musicPlayer created"); 
} 

@Override 
protected void onHandleIntent(Intent argo0) { 
play(); 
} 


public void play(){ 
    try { 
     Log.i("voila c'est cool","play"); 
     mPlayer.setDataSource(url); 
    } catch (IOException e) { 
     e.printStackTrace(); 

    Log.i("test","destroy");  } 
    mPlayer.start(); 

} 

}

Намерение начать свою службу:

case R.id.play: 
      Intent intent = new Intent(getActivity(), MusicPlayerService.class); 
      getActivity().startService(intent); 
      break; 

и, наконец, LOG:

java.lang.RuntimeException: Unable to start service [email protected] with Intent { cmp=com.example.pierr.puremusictest2/.MusicPlayerService }: java.lang.NullPointerException 
                       at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2719) 
                       at android.app.ActivityThread.access$2100(ActivityThread.java:135) 
                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1293) 
                       at android.os.Handler.dispatchMessage(Handler.java:102) 
                       at android.os.Looper.loop(Looper.java:136) 
                       at android.app.ActivityThread.main(ActivityThread.java:5027) 
                       at java.lang.reflect.Method.invokeNative(Native Method) 
                       at java.lang.reflect.Method.invoke(Method.java:515) 
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
                       at dalvik.system.NativeStart.main(Native Method) 
                      Caused by: java.lang.NullPointerException 
                       at android.app.IntentService.onStart(IntentService.java:116) 
                       at android.app.IntentService.onStartCommand(IntentService.java:130) 
                       at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2702) 
                       at android.app.ActivityThread.access$2100(ActivityThread.java:135)  
                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1293)  
                       at android.os.Handler.dispatchMessage(Handler.java:102)  
                       at android.os.Looper.loop(Looper.java:136)  
                       at android.app.ActivityThread.main(ActivityThread.java:5027)  
                       at java.lang.reflect.Method.invokeNative(Native Method)  
                       at java.lang.reflect.Method.invoke(Method.java:515)  
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)  
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)  
                       at dalvik.system.NativeStart.main(Native Method)  
+0

Вам не нужен вызов 'super.onCreate()' в 'переопределении' onCreate() 'IntentService'. –

+0

Возможный дубликат [Null Pointer exception, начиная IntentService] (http://stackoverflow.com/questions/7165215/null-pointer-exception-starting-intentservice) –

+0

первое решение было правильным! Большое спасибо: D –

ответ

1

В своей службы onCreate(), вызовите super.onCreate(), прежде чем делать что-либо еще.

Обратите внимание, что с помощью IntentService для воспроизведения музыки довольно странный выбор:

  • Там нет ничего в вашем onHandleIntent() метод, который выглядит, как он нуждается в фоновый поток.

  • IntentService будет уничтожен один раз onHandleIntent() возвращается. Я забыл, что MediaPlayer ли это остановит воспроизведение (как только потерянный объект MediaPlayer будет собран с мусором), или если вы просто потеряете контроль над воспроизведением.

+0

Thakns вы так много работали просто отлично !!! –

+0

, но вы правы, IntentService закрывается, как только onHandleIntent возвращается, так что я должен делать? –

+0

@ pierre-charlesMangin: Не используйте «IntentService». Я не знаю, каковы ваши цели. Обычно, если вы хотите играть в фоновую музыку под управлением пользователя (например, play/stop), вы должны использовать регулярную 'Сервис', используя' startService() 'и' stopService() 'для управления службой и, контролируйте воспроизведение музыки. – CommonsWare

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

  • Нет связанных вопросов^_^