2017-05-24 42 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的一些線程中。