2011-07-30 18 views
5

Non sono riuscito a trovare alcuna buona applicazione per lo streaming di MP3 da un URL che può essere eseguito in background che soddisfi i miei requisiti, quindi ho deciso di scriverne uno da solo. Si scopre che è incredibilmente facile fare lo streaming di un MP3 con il MediaPlayer nativo se stai utilizzando Froyo o meglio, e io lo sono.Posso interrompere Android dall'uccidere la mia app?

Ma il mio problema è che se cambio le applicazioni e cerco di far continuare il flusso (alcune delle quali durano da 2 a 4 ore) e faccio un gioco o qualcosa mentre sto ascoltandolo, a volte muore. Non sono sicuro di quale sia il problema, suppongo che il sistema Android abbia deciso che è stato OK uccidere quel processo ... ma non lo era.

Quindi c'è qualcosa che posso fare per farlo uccidere altri processi se sono necessarie risorse invece della mia app per streaming mp3?

Quello che ho cercato:

android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_AUDIO); 

Ma non va bene.

+0

Potrebbe anche esserci dello streaming in quel gioco, anche se non è sicuro, succede che Android non possa riprodurre più streaming audio .......... http://stackoverflow.com/questions/5642508/android -multiple-simultaneo-streaming-audio – viv

+0

Ho sentito anche questo, ma prima che la mia attività fosse single instance, potevo eseguirla almeno due volte contemporaneamente per lo streaming di file diversi. – Nick

risposta

2

ho scoperto che dopo il mio Droid Incredible è stato aggiornato a Gingerbread (2.3.4) tutto ad un tratto funziona. Non ho fatto nessun cambiamento, semplicemente non muore in Gingerbread come in Froyo. So che ci sono stati miglioramenti del lettore multimediale in Gingerbread, quindi dovrò supporre che ci fosse un bug in Froyo che è stato corretto in Gingerbread.

-2

Ho avuto problemi con la gestione della memoria nel mio telefono Android, che ha interrotto processi come lei descritto. Si può prendere in considerazione l'installazione di un programma come Android Booster per monitorare la memoria disponibile e chiudere i programmi che utilizzano troppa memoria, in modo che i programmi che si desidera mantenere aperti abbiano memoria sufficiente per l'esecuzione.

0

Per quanto ne so, un programma non può essere eseguito per sempre, a un certo punto il sistema operativo lo ucciderà. Ma quello che puoi provare è avere un servizio e fargli generare notifiche di tanto in tanto con informazioni utili. Quindi, ricomincia l'attività.

0

Ciò è dovuto a un'attività Lifecycle. Il sistema operativo potrebbe uccidere la tua app se ha bisogno di memoria. Potrebbe essere necessario prendere in considerazione un service

8

È necessario rendere il servizio un servizio in primo piano, se non lo si è già fatto. I servizi in primo piano devono visualizzare un'icona nella barra delle notifiche e il sistema Android non li ucciderà se non con una pressione di memoria estrema.

Scopri i documenti per startForeground()

+0

Fantastico. Il mio prossimo passo è stato aggiungere una notifica per questo. Sembra che il servizio in primo piano gestirà entrambi. – Nick

+0

Penso che tu abbia la soluzione. La risposta sotto non è la soluzione perché dipende dalla versione di Android. – Cocorico

Problemi correlati