我在应用程序中播放循环背景音乐,我使用SoundPool。 我也使用PreferenceFragment(当然还有sharedPreferences)和UI复选框“背景音乐开/关”。
用户从Preference Fragment中删除/设置UI复选框时,背景音乐应立即停止/开始播放。
问题:
如何将PreferenceFragment中的数据从onSharedPreferenceChanged()立即发送到另一个UI片段(参见图表)? THX。
UPD 问题解决了。
将一个对象(直接控制声音)设为Singleton。 然后从onSharedPreferenceChanged直接调用SoundPool_pause_method。
在建筑方面也许这不是真的。
我(很快)读了很多信息: 在服务中使用MediaPlayer, AsyncTask(我已经知道它不合适), 遗嘱执行人, ThreadPoolExecutor的, FutureTask, HandlerThread。
答案 0 :(得分:1)
如果您正在寻找快速解决方案,那么您可以尝试触发自定义广播。
您可以查看教程here。您的MainUIFragment
将BroadcastListener
将收听特定的自定义事件广播,该广播可以在PreferenceFragment
时触发。
在清单
中声明 <receiver android:name="MyReceiver">
<intent-filter>
<action android:name="some.identifier.string">
</action>
</intent-filter>
</receiver>
自定义接收器处理事件广播
public class MyReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "Intent Detected.", Toast.LENGTH_LONG).show();
}
}
来自
的射击活动public void broadcastIntent(View view){
Intent intent = new Intent();
intent.setAction("some.string.identifier"); sendBroadcast(intent);
}