相关疑难解决方法(0)

MediaPlayer在单独的线程中与在服务中通过startForeground()运行

所以,我是在一个单独的线程中播放音乐.如果我离开应用程序(onPause(),onStop()被调用等),音乐将继续播放,但最终 - 打开其他应用程序并在它们之间切换并返回主屏幕 - 我的应用程序被杀死.没有崩溃,只是一个WIN DEATH和process com.myapp.android has died在logcat中.显然,系统为了回收资源而销毁应用程序是合法的.

我的问题是:在主(UI)线程的线程中运行东西是否意味着它现在具有较低的优先级,就系统而言?这意味着,它是否比我在运行媒体播放器Service甚至用于startForeground()使服务在前台运行更可能被杀死?

任何想法或澄清将不胜感激!

编辑

此外,部分服务文档让我感到困惑.在相关部分,它指出:

警告:服务在其托管进程的主线程中运行 - 该服务不会创建自己的线程,也不会在单独的进程中运行(除非您另行指定).这意味着,如果您的服务要进行任何CPU密集型工作或阻止操作(例如MP3播放或网络),您应该在服务中创建一个新线程来完成这项工作.

我总是在主线程的服务中运行MP3播放,并且UI保持响应.如果我应该把它放在上面引文中推荐的一个单独的线程中,那么我最终不会回到我开始的地方,即主要线程发生媒体播放,从而增加了回放的可能性打开其他应用程序等时被杀?

android

9
推荐指数
2
解决办法
6967
查看次数

MediaPlayer.start()也应该是一个新线程吗?

这里的教程解释了服务实际上使用主线程.所以它prepareAsync用来避免阻止UIS:http: //developer.android.com/guide/topics/media/mediaplayer.html#asyncprepare

我想知道异步回调onPrepared在哪里运行.在示例中onPrepared调用start MediaPlayer.是否也是一个CPU密集型方法?如果它在同一个线程中运行,它也会阻塞.

android android-asynctask android-mediaplayer

7
推荐指数
1
解决办法
4987
查看次数