Java ContentObserver的onchange中未更新int值
我正在开发一个android应用程序,我的类在其中扩展ContentObserver。我正在注册 我的课是用来观察音量变化的 我的类的onchange方法仅在音量按钮更改时被调用 问题是,在类的构造函数中更新的全局int变量在onchange方法中没有更新 下面的代码是我尝试过的Java ContentObserver的onchange中未更新int值,java,android,volume,contentobserver,Java,Android,Volume,Contentobserver,我正在开发一个android应用程序,我的类在其中扩展ContentObserver。我正在注册 我的课是用来观察音量变化的 我的类的onchange方法仅在音量按钮更改时被调用 问题是,在类的构造函数中更新的全局int变量在onchange方法中没有更新 下面的代码是我尝试过的 public class VolumeChecker extends ContentObserver { Context context; Handler handl
public class VolumeChecker extends ContentObserver
{
Context context;
Handler handler;
int initialVolume;
public VolumeChecker(Context c, Handler handler)
{
super(handler);
context=c;
this.handler = handler;
AudioManager audio = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
initialVolume = audio.getStreamVolume(AudioManager.STREAM_RING);
Log.e("inisde","volvhevker - intitvol " + initialVolume);
}
@Override
public boolean deliverSelfNotifications()
{
return super.deliverSelfNotifications();
}
@Override
public void onChange(boolean selfChange)
{
super.onChange(selfChange);
Log.e("onchange","initialVolume" + initialVolume);
refresh();
}
public void refresh()
{
new VolumeChecker(context,handler);
}
}
initialVolume变量值,在刷新时在构造函数中更新,
未在onchange方法中得到反映
请帮忙,谢谢 在
refresh()
中创建新的VolumeChecker
的目的是什么?您只需再次更新变量,如下所示:
public void refresh() {
AudioManager audio = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
initialVolume = audio.getStreamVolume(AudioManager.STREAM_RING);
}
也许做一些重构,使音频成为一个全局变量,这样您就不必每次都重新创建它。您可能还可以将refresh()
方法的内容直接重构为onChange()
方法