Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何通过异步调用检索方法中定义的列表?_Java_Android - Fatal编程技术网

Java 如何通过异步调用检索方法中定义的列表?

Java 如何通过异步调用检索方法中定义的列表?,java,android,Java,Android,我正在尝试使用一种新技术:灯塔。我用Jaalee信标,我用Android编程。我的问题是:当我第一次使用信标时,我使用一种扫描所有设备的方法,但我的个人设备总是出现(我认为这是正常的),为此我尝试将其添加到ArrayList中。 但是当我想读这个arrayList时,它是空的,因为我认为扫描还没有完成 bledevice = new ArrayList<BLEDevice>(); beaconManager.setDeviceDiscoverListener(new Devi

我正在尝试使用一种新技术:灯塔。我用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());
}
bledevice=newArrayList();
beaconManager.setDeviceDiscoverListener(新的DeviceDiscoverListener(){
@凌驾
BleDeviceDiscovered上的公共无效(最终BLEDevice){
runOnUiThread(新的Runnable(){
@凌驾
public void run(){
Log.i(“Jaalee”,“蓝牙发现:”+device.getMacAddress());
logToDisplay(“信标trovato:\n”+
“MAC”+设备。getMacAddress()+”\n”+
“Nome”+设备.getName()+”\n”+
“RSSI”+device.getRssi()+“\n”);
添加(设备);
}
});
}
});
用于(BLEDevice项目:BLEDevice){
Log.i(“LIST”,“check:+item.getMacAddress());
logToDisplay(item.toString());
}

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

我认为您应该在PreExecute、doInBackground和onPostExecute上查看AsyncTask及其方法

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