将数据从onSharedPreferenceChanged()发送到另一个UI片段

时间:2017-03-31 09:19:42

标签: android android-fragments singleton android-preferences android-sharedpreferences

我在应用程序中播放循环背景音乐,我使用SoundPool。 我也使用PreferenceFragment(当然还有sharedPreferences)和UI复选框“背景音乐开/关”。

用户从Preference Fragment中删除/设置UI复选框时,背景音乐应立即停止/开始播放。

问题

如何将PreferenceFragment中的数据从onSharedPreferenceChanged()立即发送到另一个UI片段(参见图表)? THX。

diagram

UPD 问题解决了。

将一个对象(直接控制声音)设为Singleton。 然后从onSharedPreferenceChanged直接调用SoundPool_pause_method。

enter image description here

在建筑方面也许这不是真的。

我(很快)读了很多信息: 在服务中使用MediaPlayer, AsyncTask(我已经知道它不合适), 遗嘱执行人, ThreadPoolExecutor的, FutureTask, HandlerThread。

1 个答案:

答案 0 :(得分:1)

如果您正在寻找快速解决方案,那么您可以尝试触发自定义广播。

您可以查看教程here。您的MainUIFragmentBroadcastListener将收听特定的自定义事件广播,该广播可以在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);
   }