Java ContentObserver的onchange中未更新int值

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

我正在开发一个android应用程序,我的类在其中扩展ContentObserver。我正在注册 我的课是用来观察音量变化的

我的类的onchange方法仅在音量按钮更改时被调用

问题是,在类的构造函数中更新的全局int变量在onchange方法中没有更新

下面的代码是我尝试过的

   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()
方法