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