如何检索使用异步调用在方法中定义的列表?

时间:2016-01-10 10:58:27

标签: java android

我试图使用新的Tecnology:Beacon。我使用Jaalee信标,我用Android编程。我的问题是:当我第一次使用信标时,我使用扫描所有设备的方法,但我的个人设备总是出现(我认为这是正常的)为此我尝试添加此在ArrayList中。 但是当我想读取这个arrayList时它是空的,因为我认为扫描它没有完成。

 bledevice = new  ArrayList<BLEDevice>();

 beaconManager.setDeviceDiscoverListener(new DeviceDiscoverListener() {

        @Override
        public void onBLEDeviceDiscovered(final BLEDevice device) {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {                       
                    Log.i("Jaalee", " Bluetooth discovered:" + device.getMacAddress());
                    logToDisplay("Beacon trovato: \n " +
                                    "MAC " + device.getMacAddress() + "\n" +
                                    "Nome " + device.getName() + "\n" +
                                    "RSSI " + device.getRssi() + "\n");
                    bledevice.add(device);
                }
            });
        }
    });

for (BLEDevice item : bledevice) {
    Log.i("LIST"," check :" + item.getMacAddress());
    logToDisplay(item.toString());
}

在我看来,我应该使用Java中的CallBack,但我不知道是否有正确的方法。

1 个答案:

答案 0 :(得分:0)

我认为你应该看看AsyncTask及其方法onPreExecute,doInBackground和onPostExecute。

因此,您可以在doInBackground()中添加数据,然后在onPostExecute中运行循环。