2017-05-24 35 views
0

我正在尝试使用一些移动设备的传感器来制作Android应用程序。我在想这个。java和/或android事件是否并发?

public class ListenerSensores implements SensorEventListener { 

    LinkedBlockingQueue<float[]> acelerations = new LinkedBlockingQueue(); 

    public void onSensorChanged (SensorEvent event) { 
     //Add event values to the data structure 
    } 

    private ArrayList<float[]> obtainLastXValues(LinkedBlockingQueue<float[]> queue, int amount) { 

    ArrayList<float[]> values = new ArrayList<float[]>(); 

    for (int i = 0; i < amount; ++i) { 
     while(queue.isEmpty()){ 
     //wait 
     } 

     float data[] = new float[4]; 
     data = queue.poll(); 
     float thing[] = {data[0], data[1], data[2], data[3]}; 
     values.add(thing); 
    } 

    return values; 
    } 

我应该使用什么的LinkedBlockingQueue或简单的东西像LinkedList的将工作?

回答

1

1)Java和/或Android事件是否并发?

答案是 - 它取决于特定API的设计方式,而不是Java和/或Android。因此,在每种情况下,您都需要阅读文档,了解它在哪个线程中被调用。但在大多数情况下,它只是一个主线程,因为它稍后更方便和可扩展。如果你需要,你可以在你自己的线程中处理任何回调。

2)SensorEventListener默认在UI线程上运行。但是你可以传递一个Handler来将处理移动到Looper的一些线程中。