活动和/或服务

时间:2011-04-27 20:21:36

标签: android

我的应用程序中有一个活动和一个服务组件。

目的是让服务负责准备需要表面持有者的SurfaceView和媒体播放器实例。我的媒体是视频文件。

是否可以在我的服务中创建表面视图?

我可以拨打以下内容

surface = (MySurfaceView) findViewById(R.id.surface);

在我的服务组件中?

如果我这样做,我可以将surface.getHolder分配给玩家实例的setDisplay()

总体目标是从活动中发出命令(播放,停止,搜索等),让服务实现对媒体播放器状态的控制。

我可能会将所有内容都放在我的活动中,但是当我旋转设备时,我不想拆掉表面并在onConfigurationChanged()中重新创建它。因此,请考虑在此处使用该服务。

高度赞赏任何想法或解决方案。

感谢。

2 个答案:

答案 0 :(得分:1)

您可以使用AsyncTask实施而不是服务,并执行

  • 其中的所有后台工作 doInBackground方法(不同 线程,不会打扰用户 接口),而
  • 可以完成与UI相关的所有工作 在onPostExecute方法(UI 线程)。

<强>更新
由于您需要在后台线程中播放媒体(不会被gui进程中断),Service可能是您的选择。您还需要一个Activity来启动,停止和控制您的服务。
有关如何实现此设计,您可以查看此MusicDroid Tutorial part 2

虽然,并非强制要求使用服务来完成这项任务,但@ CommonsWare的解决方案非常优雅和方便。
@CommonsWare's streaming video test application,此Audio/Video player sample不使用服务。

答案 1 :(得分:0)

如果您想从Service开始和停止Activity,请尝试使用in this example application所述的方法。它对我有用。

演示可能是downloaded。您需要this music file