学习android中的service一般都会举播放音乐的例子,sdk上说service是在主线程(UI线程)中的,但是播放音乐不是一个耗时的工作么,不会阻塞UI线程么,在这一点上service和线程有什么区别呢?难道MediaPlayer是一个子线程? 不解啊,懂的朋友说一下 :)
------解决方案--------------------
那可比线程更高一个层次了 :)
是在另外一个进程中的一个系统服务来做的。
服务进程是MediaServer
一般这个服务进程负责媒体播放及照相服务功能。这是server端, 负责处理你音乐播放client端的binder transact请求的。
donut下起启动文件是 main_mediaserver.cpp
内容很简单:
int main(int argc, char** argv)
{
sp<ProcessState> proc(ProcessState::self());
sp<IServiceManager> sm = defaultServiceManager();
LOGI("ServiceManager: %p", sm.get());
AudioFlinger::instantiate();
MediaPlayerService::instantiate();
CameraService::instantiate();
ProcessState::self()->startThreadPool();
IPCThreadState::self()->joinThreadPool();
}
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
你查查系统的service和普通的service的区别
------解决方案--------------------
设计到跨进程调用aidl
------解决方案--------------------