2010-08-01 6 views
0

J'ai un service avec un MediaPlayer qui diffuse de l'audio à partir d'Internet, mais lorsque j'appuie sur le bouton Home et qu'il revient à l'écran d'accueil, il se ferme. C'est étrange parce que ça fonctionne parfaitement dans l'émulateur et parfois ça ne force pas Close sur mon téléphone (G1), quand je l'ai juste allumé. Ceci est mon code:Service avec MediaPlayer Force Close

public class backgroundPlayer extends Service { 

@Override 
public IBinder onBind(Intent intent) { 
    return null; 
} 

@Override 
public void onCreate() { 

} 

@Override 
public void onDestroy() { 
    MyMainClass.myMediaPlayer.stop(); 
} 

@Override 
public void onStart(Intent intent, int startid) { 
    MyMainClass.myMediaPlayer.reset(); 

    try { MyMainClass.myMediaPlayer.setDataSource(MyMainClass.channelUrl[player.selectedChannel]); 
    } catch (IllegalArgumentException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
    } catch (IllegalStateException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
    } catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
    } 
    try { 
    MyMainClass.myMediaPlayer.prepare(); 
    } catch (IllegalStateException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
    } catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
    } 
    MyMainClass.myMediaPlayer.start(); 
} 
} 

Log:

08-01 02:51:29.467: INFO/ActivityManager(123): Start proc com.android.settings for broadcast com.android.settings/.widget.SettingsAppWidgetProvider: pid=17820 uid=1000 gids={3003, 1015, 3002, 3001} 
08-01 02:51:29.467: INFO/ActivityManager(123): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10200000 cmp=com.android.launcher/.Launcher } 
08-01 02:51:29.547: INFO/ActivityManager(123): Start proc android.process.acore for activity com.android.launcher/.Launcher: pid=17823 uid=10003 gids={1015, 3003} 
08-01 02:51:30.287: INFO/ActivityManager(123): Process com.google.android.voicesearch (pid 17726) has died. 
08-01 02:51:30.306: INFO/ActivityManager(123): Low Memory: No more background processes. 
08-01 02:51:30.427: INFO/ActivityThread(17823): Publishing provider com.android.launcher.settings: com.android.launcher.LauncherProvider 
08-01 02:51:30.457: INFO/ActivityThread(17823): Publishing provider user_dictionary: com.android.providers.userdictionary.UserDictionaryProvider 
08-01 02:51:30.497: INFO/ActivityThread(17823): Publishing provider com.android.social: com.android.providers.contacts.SocialProvider 
08-01 02:51:30.537: INFO/ActivityThread(17823): Publishing provider applications: com.android.providers.applications.ApplicationsProvider 
08-01 02:51:30.757: INFO/ActivityThread(17823): Publishing provider contacts;com.android.contacts: com.android.providers.contacts.ContactsProvider2 
08-01 02:51:31.457: INFO/ActivityManager(123): Process com.android.settings (pid 17820) has died. 
08-01 02:51:31.467: INFO/ActivityManager(123): Low Memory: No more background processes. 
08-01 02:51:31.667: DEBUG/dalvikvm(17823): GC_FOR_MALLOC freed 2871 objects/200896 bytes in 116ms 
08-01 02:51:31.687: INFO/ActivityThread(17823): Publishing provider call_log: com.android.providers.contacts.CallLogProvider 
08-01 02:51:31.957: DEBUG/dalvikvm(17823): GC_EXTERNAL_ALLOC freed 967 objects/49736 bytes in 110ms 
08-01 02:51:33.867: DEBUG/dalvikvm(17823): GC_EXTERNAL_ALLOC freed 6359 objects/416536 bytes in 154ms 
08-01 02:51:34.666: DEBUG/dalvikvm(17823): GC_EXTERNAL_ALLOC freed 1253 objects/75368 bytes in 306ms 
08-01 02:51:35.297: INFO/ActivityManager(123): Displayed activity com.android.launcher/.Launcher: 83778 ms (total 5806 ms) 
08-01 02:51:37.347: DEBUG/HomeLoaders(17823): ----> items cloned, ready to refresh UI 
08-01 02:51:38.237: DEBUG/Launcher(17823): about to setAppWidget for id=6, info=AppWidgetProviderInfo(provider=ComponentInfo{com.android.deskclock/com.android.alarmclock.AnalogAppWidgetProvider}) 
08-01 02:51:38.417: INFO/ActivityManager(123): Start proc com.android.deskclock for broadcast com.android.deskclock/com.android.alarmclock.AnalogAppWidgetProvider: pid=17862 uid=10011 gids={} 
08-01 02:51:38.817: INFO/ActivityManager(123): Process com.ktix007.mira (pid 17708) has died. 
08-01 02:51:38.817: INFO/WindowManager(123): WIN DEATH: Window{4407fd70 com.ktix007.mira/com.ktix007.mira.Mira paused=false} 
08-01 02:51:38.827: WARN/ActivityManager(123): Scheduling restart of crashed service com.ktix007.mira/.bgPlayer in 5000ms 
08-01 02:51:38.847: WARN/TimedEventQueue(96): Event 315 was not found in the queue, already cancelled? 
08-01 02:51:38.857: INFO/WindowManager(123): WIN DEATH: Window{440a3ed0 com.ktix007.mira/com.ktix007.mira.player paused=false} 
08-01 02:51:38.867: INFO/ActivityManager(123): Low Memory: No more background processes. 
08-01 02:51:38.907: INFO/ActivityThread(17862): Publishing provider com.android.deskclock: com.android.deskclock.AlarmProvider 
08-01 02:51:39.717: INFO/ActivityManager(123): Process com.android.deskclock (pid 17862) has died. 
08-01 02:51:39.727: INFO/ActivityManager(123): Low Memory: No more background processes. 
08-01 02:51:39.907: DEBUG/dalvikvm(17823): GC_FOR_MALLOC freed 7394 objects/409864 bytes in 140ms 
08-01 02:51:40.197: DEBUG/Launcher(17823): about to setAppWidget for id=2, info=AppWidgetProviderInfo(provider=ComponentInfo{com.google.android.googlequicksearchbox/com.google.android.googlequicksearchbox.SearchWidgetProvider}) 
08-01 02:51:40.247: INFO/ActivityManager(123): Start proc com.google.android.googlequicksearchbox for broadcast com.google.android.googlequicksearchbox/.SearchWidgetProvider: pid=17869 uid=10044 gids={3003} 
08-01 02:51:41.017: INFO/ActivityThread(17869): Publishing provider com.google.android.googlequicksearchbox.google: com.google.android.googlequicksearchbox.google.GoogleSuggestionProvider 
08-01 02:51:41.627: DEBUG/Launcher(17823): about to setAppWidget for id=7, info=AppWidgetProviderInfo(provider=ComponentInfo{com.android.settings/com.android.settings.widget.SettingsAppWidgetProvider}) 
08-01 02:51:41.667: INFO/ActivityManager(123): Start proc com.android.settings for broadcast com.android.settings/.widget.SettingsAppWidgetProvider: pid=17878 uid=1000 gids={3003, 1015, 3002, 3001} 
08-01 02:51:42.747: INFO/ActivityManager(123): Process com.google.android.googlequicksearchbox (pid 17869) has died. 
08-01 02:51:42.757: INFO/ActivityManager(123): Low Memory: No more background processes. 
08-01 02:51:43.067: INFO/ActivityManager(123): Process com.google.android.apps.genie.geniewidget (pid 17590) has died. 
08-01 02:51:43.077: WARN/ActivityManager(123): Scheduling restart of crashed service com.google.android.apps.genie.geniewidget/.GenieRefreshService in 10750ms 
08-01 02:51:43.097: INFO/ActivityManager(123): Low Memory: No more background processes. 
08-01 02:51:43.397: DEBUG/dalvikvm(17823): GC_FOR_MALLOC freed 8354 objects/423984 bytes in 409ms 
08-01 02:51:43.567: DEBUG/Launcher(17823): about to setAppWidget for id=8, info=AppWidgetProviderInfo(provider=ComponentInfo{com.google.android.apps.genie.geniewidget/com.google.android.apps.genie.geniewidget.miniwidget.MiniWidgetProvider}) 
08-01 02:51:43.667: INFO/ActivityManager(123): Start proc com.google.android.apps.genie.geniewidget for broadcast com.google.android.apps.genie.geniewidget/.miniwidget.MiniWidgetProvider: pid=17887 uid=10048 gids={3003, 1015} 
08-01 02:51:43.887: INFO/ActivityManager(123): Start proc com.ktix007.mira for service com.ktix007.mira/.bgPlayer: pid=17892 uid=10053 gids={3003} 
08-01 02:51:44.576: DEBUG/AndroidRuntime(17892): Shutting down VM 
08-01 02:51:44.576: WARN/dalvikvm(17892): threadid=1: thread exiting with uncaught exception (group=0x400207e8) 
08-01 02:51:44.677: ERROR/AndroidRuntime(17892): FATAL EXCEPTION: main 
08-01 02:51:44.677: ERROR/AndroidRuntime(17892): java.lang.RuntimeException: Unable to start service [email protected] with null: java.lang.NullPointerException 
08-01 02:51:44.677: ERROR/AndroidRuntime(17892):  at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3063) 
08-01 02:51:44.677: ERROR/AndroidRuntime(17892):  at android.app.ActivityThread.access$3600(ActivityThread.java:125) 
08-01 02:51:44.677: ERROR/AndroidRuntime(17892):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2096) 
08-01 02:51:44.677: ERROR/AndroidRuntime(17892):  at android.os.Handler.dispatchMessage(Handler.java:99) 
08-01 02:51:44.677: ERROR/AndroidRuntime(17892):  at android.os.Looper.loop(Looper.java:123) 
08-01 02:51:44.677: ERROR/AndroidRuntime(17892):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
08-01 02:51:44.677: ERROR/AndroidRuntime(17892):  at java.lang.reflect.Method.invokeNative(Native Method) 
08-01 02:51:44.677: ERROR/AndroidRuntime(17892):  at java.lang.reflect.Method.invoke(Method.java:521) 
08-01 02:51:44.677: ERROR/AndroidRuntime(17892):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
08-01 02:51:44.677: ERROR/AndroidRuntime(17892):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
08-01 02:51:44.677: ERROR/AndroidRuntime(17892):  at dalvik.system.NativeStart.main(Native Method) 
08-01 02:51:44.677: ERROR/AndroidRuntime(17892): Caused by: java.lang.NullPointerException 
08-01 02:51:44.677: ERROR/AndroidRuntime(17892):  at com.ktix007.mira.bgPlayer.onStart(bgPlayer.java:35) 
08-01 02:51:44.677: ERROR/AndroidRuntime(17892):  at android.app.Service.onStartCommand(Service.java:420) 
08-01 02:51:44.677: ERROR/AndroidRuntime(17892):  at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3053) 
08-01 02:51:44.677: ERROR/AndroidRuntime(17892):  ... 10 more 
08-01 02:51:45.137: DEBUG/Launcher(17823): about to setAppWidget for id=10, info=AppWidgetProviderInfo(provider=ComponentInfo{com.android.music/com.android.music.MediaAppWidgetProvider}) 
08-01 02:51:45.197: INFO/ActivityManager(123): Process com.android.settings (pid 17878) has died. 
08-01 02:51:45.197: INFO/ActivityManager(123): Low Memory: No more background processes. 
08-01 02:51:45.267: INFO/ActivityThread(17887): Publishing provider com.google.android.apps.genie.geniewidget.weather: com.google.android.apps.genie.geniewidget.providers.WeatherProvider 
08-01 02:51:45.417: INFO/ActivityThread(17887): Publishing provider com.google.android.apps.genie.geniewidget.newsimage: com.google.android.apps.genie.geniewidget.providers.NewsImageProvider 
08-01 02:51:46.197: WARN/Genie(17887): Cache file not found: java.io.FileNotFoundException: /data/data/com.google.android.apps.genie.geniewidget/files/genie_iconcache (No such file or directory) 
08-01 02:51:46.487: DEBUG/Launcher(17823): about to setAppWidget for id=11, info=AppWidgetProviderInfo(provider=ComponentInfo{com.google.android.youtube/com.google.android.youtube.widget.WidgetProvider}) 
08-01 02:51:46.896: DEBUG/dalvikvm(17887): GC_FOR_MALLOC freed 9118 objects/346184 bytes in 247ms 
08-01 02:51:47.437: INFO/ActivityManager(123): Start proc com.android.music for broadcast com.android.music/.MediaAppWidgetProvider: pid=17907 uid=10020 gids={3003, 1015} 
08-01 02:51:47.517: INFO/ActivityManager(123): Process com.google.android.apps.genie.geniewidget (pid 17887) has died. 
08-01 02:51:47.517: INFO/ActivityManager(123): Low Memory: No more background processes. 
08-01 02:51:48.137: INFO/dalvikvm(17823): Jit: resizing JitTable from 512 to 1024 
08-01 02:51:48.277: INFO/ActivityManager(123): Start proc com.google.android.youtube for broadcast com.google.android.youtube/.widget.WidgetProvider: pid=17914 uid=10023 gids={3003} 
08-01 02:51:48.587: INFO/ActivityManager(123): Process com.android.music (pid 17907) has died. 
08-01 02:51:48.587: INFO/ActivityManager(123): Low Memory: No more background processes. 
08-01 02:51:48.647: INFO/ActivityThread(17914): Publishing provider com.google.android.youtube.SuggestionProvider: com.google.android.youtube.suggest.SuggestionProvider 
08-01 02:51:49.027: INFO/YouTube(17914): Distribution channel:mvapp-android-google 
08-01 02:51:49.827: INFO/ActivityManager(123): Process com.google.android.youtube (pid 17914) has died. 
08-01 02:51:49.827: INFO/ActivityManager(123): Low Memory: No more background processes. 
+0

Quelle est la sortie 'adb logcat' pour la fermeture forcée? Il aura probablement une trace de pile. –

+0

Je l'ai ajouté à la question. – JoeyCK

+0

Pouvez-vous s'il vous plaît donner votre avis pour les réponses? –

Répondre

0

Je suis absolument pas un expert, mais je vais essayer d'offrir une réponse depuis que je travaille avec ce même genre de chose.

voir Ok si tout cela aide:

1) Débarrassez-vous de onStart() Je ne pense même pas qui est utilisé plus?

2) Mettez tout le code que vous avez dans onStart() dans onCreate(). Ne pas oublier super.onCreate(); comme première ligne de la méthode onCreate().

3) Comme la première ligne de la méthode onDestroy() vous avez besoin super.onDestroy();

4) font également un MediaPlayer.release(); dans votre méthode onDestroy() après que vous l'arrêtez.

0

Android libère toutes les variables statiques lorsque la mémoire est insuffisante. Cela rend les variables statiques nulles. C'est probablement la source de NPE (NullPointerException).