【发布时间】:2017-03-31 09:19:41
【问题描述】:
我在应用中播放循环背景音乐,我使用 SoundPool。 我还使用 PreferenceFragment(当然还有 sharedPreferences)和 UI 复选框“Background Music On/Off”。
一旦用户从偏好片段中移除/设置 UI 复选框,背景音乐应该立即停止/开始播放。
问题:
如何立即从 onSharedPreferenceChanged() 将 PreferenceFragment 中的数据发送到另一个 UI 片段(见图)? 谢谢。
UPD 问题解决了。
制作一个对象(直接控制声音)作为单例。 然后从 onSharedPreferenceChanged 直接调用 SoundPool_pause_method。
也许这在架构方面是不正确的。
我(很快)阅读了很多信息: 在服务中使用 MediaPlayer, AsyncTask(我已经知道不合适), 执行人, 线程池执行器, 未来任务, 处理线程。
【问题讨论】:
-
使用EventBus。它是一个库,用于在应用程序中从任何组件到组件触发事件。
-
或发送内部广播(如果您正在寻找快速解决方案)
-
如果两个片段都附加到 Mainactivity 并且应该对同一个 sharedPreferencesChange 做出反应,为什么不在知道两个片段的活动中实现监听器呢。
标签: android android-fragments singleton android-preferences android-sharedpreferences