У меня есть метод, при котором я регистрирую широковещательные приемники, используя фильтры намерений для обнаружения устройств Bluetooth.
// global variable
String xpto = "empty";
Вот метод void:
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
App appState = ((App)getApplicationContext());
appState.setTeste("OLAAAAA");
String action = intent.getAction();
elementos = new Vector<String>();
String delimiter = "_";
String[] temp = null;
xpto = "OLA";
// When discovery finds a device
if (BluetoothDevice.ACTION_FOUND.equals(action)) {
// Get the BluetoothDevice object from the Intent
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
// SO VAI VERIFICAR DO QUE ESTAO PRESENTES (DISCOVERABLE) OS QUE ESTAO PAIRED
if (device.getBondState() == BluetoothDevice.BOND_BONDED) {
Log.v("TAG","PAIRED AND PRESENT="+device.getName());
temp = device.getName().split(delimiter);
}
int aux = 0;
if(temp != null)
{
for(int i =0; i < temp.length ; i++)
{
if(temp[aux].equals("SapoFit"))
{
elementos.add(temp[aux]+"_"+temp[aux+1]);
Log.v("TAG","Seleccionado="+temp[aux]+"_"+temp[aux+1]);
}
aux++;
}
elSelecionado = temp[0]+"_"+temp[0+1];
}
}
}
};
this.registerReceiver(mReceiver, filter);
Log.v("TAG","HERE COMES empty="+xpto.toString());
Моя проблема:код в этом методе выполняется последовательно, к тому времени, когда я пытаюсь использовать (в этом методе в последовательности) некоторые глобальные переменные, которые я выделяю в Broadcast Receiver, они все еще null или пусты.
Хотя в некоторых «решениях» я, например, переносил свой «основной код» с места на приемник широковещания, или когда какая-то другая глобальная переменная была присвоена 1, когда BR завершен (и некоторое время x =! 1 восновной код, чтобы ждать) но это не хорошее программирование, я уверен, что есть правильный способ сделать это.
Я нашел PendingResult, но уровень API 11 слишком высок для меня.Есть предложения?