我正在尝试为变量创建一个自定义侦听器,该变量会不断变化,并希望每次记录更改时都跟踪它并更新我的显示(TextView)。我参考了In Android, how do I take an action whenever a variable changes? 但是,这只运行一次。我希望它能够持续跟踪更改并在状态更改时更新显示。
答案 0 :(得分:9)
我可以想到很多方法可以做到这一点,但我认为最简单的方法就是创建一个变量的包装器,你要去"听"实现getter和setter,当然还有listener接口。 让你想要"听"到一个int变量:
public interface OnIntegerChangeListener
{
public void onIntegerChanged(int newValue);
}
public class ObservableInteger
{
private OnIntegerChangeListener listener;
private int value;
public void setOnIntegerChangeListener(OnIntegerChangeListener listener)
{
this.listener = listener;
}
public int get()
{
return value;
}
public void set(int value)
{
this.value = value;
if(listener != null)
{
listener.onIntegerChanged(value)
}
}
}
然后你就可以使用它了:
ObservableInteger obsInt = new ObservableInteger();
obsInt.setOnIntegerChangeListener(new OnIntegerChangeListener()
{
@Override
public void onIntegerChanged(int newValue)
{
//Do something here
}
});
每次更改值(使用Set(...))时,将调用侦听器(如果不为null) -
答案 1 :(得分:0)
您可以采取的另一个选择(可能更复杂)是创建服务(http://developer.android.com/guide/components/services.html)
基本上,您在后台创建一个“活动”,在该背景中您创建一个循环,定期检查变量是否已更改(或者您需要在活动上创建公共方法),如果变量有变化,你可以采取行动。
对我来说,这里提出的其他选项对我来说听起来更合理,但是你提到这对你不起作用。