0

我需要不断检查变量的值。这是我从蓝牙输入流中收到的一个值,这就是为什么我需要不断检查它的原因。

我还需要做的是,当我调用该函数时,它会将当时保存在变量中的值返回给我。

为此,我正在这样做:

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即那一刻的值。

我如何实现一个函数来作为计时器执行此操作,而且还可以在我想要的时候返回变量的值来获取它?

4

2 回答 2

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

            }
        });
于 2013-09-10T10:04:21.557 回答
0

我终于以一种非常简单的方式实现了这一点:

private final Runnable refresh_input = new Runnable() {

@Override
public void run() {
    bt_read_input = GlobalVar.bt_input;
    }
    refresh_handler.postDelayed(refresh_input, 250);
}

};

这样,我每 250 毫秒刷新一次变量的值,当我想使用它的值时,我只需调用bt_read_input.

于 2013-09-12T09:55:45.733 回答