我遇到了这个链接http://examples.javacodegeeks.com/core-java/beans/bean-property-change-event-listener/其中有一个 PropertyChangeListener 的例子。在我的应用程序中,我有一个实现可运行接口的 Java 线程。我一开始就初始化了 PropertyChangeSupport 变量并注册了 PropertyChangeListener。我的意图是,当我使用 adb shell setprop 设置属性说 debug.xx.yyy 时,我希望触发 propertyChange 函数调用。但它永远不会被触发。谁能指出我哪里出错了?
这是我的示例代码:
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
....
public class MyThread implements Runnable {
public void run() {
MyPropertyChangeSupport myPCS = new MyPropertyChangeSupport();
myPCS.addMyPCS(new MyPCListener());
...
}
...
public class MyPropertyChangeSupport {
private PropertyChangeSupport pcs = new PropertyChangeSupport(this);
public void addMyPCS(PropertyChangeListener listener) {
pcs.addPropertyChangeListener("debug.xx.yyy", listener);
}
}
public class MyPCListener implements PropertyChangeListener {
public void propertyChange(PropertyChangeEvent evt) {
try {
int oldValue = (Integer) evt.getOldValue();
int newValue = (Integer) evt.getNewValue();
if (oldValue == newValue) {
Log.d(TAG, "Ignoring debug property set " + newValue);
} else {
Log.d(TAG, "Got new value " + newValue);
...
}
} catch (ClassCastException e) {
Log.e(TAG, "debug property does not have integer!");
e.printStackTrace();
} catch (NullPointerException e) {
Log.e(TAG, "debug property read encountered NULL!");
e.printStackTrace();
}
}
}
}