android - 停止从 BroadcastReceiver 启动的 Android 媒体播放器循环
问题描述
我有一个BroadcastReceiver
启动一个MediaPlayer
并循环播放声音。我的问题是,当应用程序在后台并触发接收器时,播放器会播放声音。现在我想在我再次打开我的应用程序时停止播放器。我试图向 Activity 中的接收者发送消息,onResume
但播放器的实例为空。启动/重新打开应用程序时如何停止播放器?
解决方案
尝试从 Service 控制 MediaPlayer 并使用 Context.startService() 和 Context.stopService() 并在其生命周期中处理 MediaPlayer
使用这个意图:
final Intent mpServiceIntent = new Intent(context, MPService.class);
当您的 BroadcastReceiver 被触发时,请使用:
startService(mpServiceIntent);
当调用 Activity.onCreate() 时使用:
stopService(mpServiceIntent);
推荐阅读
- sql - 从 Presto 中深度嵌套的 json 数组对象中提取 id 的查询
- java - 在 onCompleteListener 之后无法播放下一首歌曲
- ios - 用于 swift 库的 Xamarin.iOS 绑定
- c++ - 如何用不完整的图实现蛮力旅行商?
- multithreading - 当 2 个线程同时修改类对象的不同成员时,它是线程安全的吗?
- python - pytest.approx 如何实现它的魔力?
- ruby-on-rails - 如何在检索具有 has_one 关系的记录之前检查当前模型
- python - Django 查询互相喜欢的用户
- java - 有什么方法可以返回 Flux
从 Spring REST 端点到 Web 浏览器/前端应用程序(即 Angular 6)? - django-rest-framework - 如何编写允许在 url 本身中放置值的 API