android 项目的目的是从硬件设备读取一些数据,然后在 UI 中更新它们。现在我们需要封装一些后台线程接收数据的代码,并提供一个函数让其他类从这个封装的类中获取数据。下面是我这个封装类的代码:
public class getDataFromUSB{
private AtomicInteger usb_data = new AtomicInteger():
private Random random;
private Thread thread = new Thread(){
@override
public void run(){
while(!Thread.currentThread().isInterrupted()){
synchronized(usb_data){
usb_data.set(read_usb());
usb_notify();
}
}
};
public void start(){
thread.start();
}
public int get_data(){
int ret_data=0;
synchronized(usb_data){
try{
usb_data.wait();
}catch(InterruptedException e){}
ret_data=usb_data.get();
}
return ret_data;
}
public int read_usb(){
return random.nextInt();
}
}
在主活动类中,我想不断地实时获取 USB 的数据,然后将其放在 UI 中的 textview 中。所以我这样称呼这个类:
final getDataFromUSB usb1=new getDataFromUSB();
usb1.start();
for(;;){
myTextView.setText(String.valueof(usb1.get_data()));
}
但是 myTextView 中什么也没有出现。但是当我用
for(;;){
Log.d(TAG,"data="+usb1.get_data());
}
我总是可以在我的日志中获得实时值。任何人都可以帮助解决这个问题吗?或者,如果您对封装这种功能有更好的想法并提供简单的函数,如 get_data() 可以提供实时数据,请告诉我。