首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在哪里创建音乐播放器服务w.r.t。MediaBrowserServiceCompat

在哪里创建音乐播放器服务w.r.t。MediaBrowserServiceCompat
EN

Stack Overflow用户
提问于 2017-10-08 20:21:45
回答 3查看 1.1K关注 0票数 6

我想要创建一个利用MusicPlayer特性的MediaBrowserService应用程序。在浏览MediaBrowserServiceCompat的文档时,我意识到它是服务的一个子类,这意味着它运行在应用程序的主UI线程上。

但是,由于音乐播放器是一项长期运行的任务,我认为最好将其实现为IntentService,而不是服务。

所以我想问:

  1. 我应该在哪里实现我的MusicPlayer服务?
  2. 我应该在MediaBrowserServiceCompat实现中实现它吗?但是它不会对UI线程造成太大负担吗?
  3. 或者我应该将其实现为一个IntentService &从我的MediaBrowserServiceCompat调用它?但这似乎有点复杂。

这是我最初的码结构

请建议一下。

谢谢

EN

回答 3

Stack Overflow用户

发布于 2017-10-15 16:18:05

我写的音乐播放器使用后台服务来播放歌曲。

这种方法的问题在于,在小米或华为这样的设备上,为了“节省”电池寿命,这些服务被取消了。我想你能做的最好的就是当你的服务被杀了,你可以重新启动它,然后再开始.

这就是我想出的解决办法,如果有人有更好的主意,我很想听听。

票数 1
EN

Stack Overflow用户

发布于 2017-10-15 20:12:40

您应该使用Service作为音乐播放器应用程序的命令管理器。所有播放、暂停、下一次播放和其他播放控件都应该发送到服务中,并且服务将相应地委托它。此外,Android MediaPlayer还有异步方法和相关侦听器来通知调用方。请看一下。请遵循谷歌音乐播放器https://github.com/googlesamples/android-UniversalMusicPlayer的示例代码,它很好地解决了基本的音乐播放器功能。

票数 1
EN

Stack Overflow用户

发布于 2017-10-09 06:25:50

错误:

我意识到它是Service的子类,这意味着它运行在Application的主UI线程上。

医生清楚地说:

服务是一个应用程序组件,可以在后台执行长期运行的操作。

它还说,如果您需要某种长时间的任务,您应该实现为前台服务

代码语言:javascript
复制
Intent notificationIntent = new Intent(this, ExampleActivity.class);
PendingIntent pendingIntent =
        PendingIntent.getActivity(this, 0, notificationIntent, 0);

Notification notification =
          new Notification.Builder(this, CHANNEL_DEFAULT_IMPORTANCE)
    .setContentTitle(getText(R.string.notification_title))
    .setContentText(getText(R.string.notification_message))
    .setSmallIcon(R.drawable.icon)
    .setContentIntent(pendingIntent)
    .setTicker(getText(R.string.ticker_text))
    .build();

startForeground(ONGOING_NOTIFICATION_ID, notification);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46635651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档