我需要不断检查变量的值。这是我从蓝牙输入流中收到的值,这就是为什么我需要连续检查它的原因。
我还需要做的是,当我调用该函数时,它会在那一刻向我返回保存在变量中的值。
为此,我这样做:
private final Handler refresh_handler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Runnable refresh_input = new Runnable() {
@Override
public void run() {
bt_read_input = GlobalVar.bt_input; //Save received value in a local variable
refresh_handler.postDelayed(refresh_input, 500);
}
};
}
refresh_handler.post(refresh_input); //Call to the function
这似乎每0.5秒刷新一次变量。但是当我调用它时,我仍然需要它,它会返回实际变量的值,这是bt_read_input
在那一刻的值。
我如何实现一个函数来执行此操作作为计时器,还可以返回变量的值以在需要时获取它?
答案 0 :(得分:0)
试试这种方式
1)创建一个名为BloothListener.java的界面
public interface BloothListener {
void onReadValue(String value);
}
2)创建函数说startListing
public void startListing(final BloothListener bloothListener){
final Handler mHandler = new Handler();
try{
final Timer t = new Timer();
t.schedule(new TimerTask() {
@Override
public void run() {
final String bt_read_input = GlobalVar.bt_input;
mHandler.post(new Runnable() {
@Override
public void run() {
bloothListener.onReadValue(bt_read_input);
}
});
}
}, 0, 500);
}catch (Exception e) {
}
}
3)如何使用您的活动onCreate()方法
startListing(new BloothListener() {
@Override
public void onReadValue(String value) {
// get your value and use it
}
});
答案 1 :(得分:0)
我终于以一种非常简单的方式实现了这个目标:
private final Runnable refresh_input = new Runnable() {
@Override
public void run() {
bt_read_input = GlobalVar.bt_input;
}
refresh_handler.postDelayed(refresh_input, 250);
}
};
这样我每250ms刷新一次变量的值,当我想使用它的值时,我只需要调用bt_read_input
。