我在 UI 线程中注册了一个 BroadcastReceiver,它在其 onReceive 方法中从 Bundle 中获取一些信息。在我继续我的主线程之前,我需要这些值。
在尝试使用这些值之前,有什么方法可以等待 onReceive 完成?我遇到了时间问题,在我尝试使用它们之后 onReceive 设置值。让线程睡眠不起作用,因为它们在同一个线程上。
在 AsyncTask 中注册接收器并在主线程上调用 wait(),然后在完成后使用 onReceive notify() 是否有意义?
String a = "hi";
IntentFilter filter = new IntentFilter();
filter.addAction(MY_CUSTOM_INTENT);
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// Set the variable values here
a = "bye";
}
};
getApplicationContext().registerReceiver(receiver, filter);
// Get the values, I am getting a = "hi" here because the onReceive code has
// not been reached yet
// How can I guarantee that a = "bye" from this method?
getA();
方法类似于
String getA() {
return a;
}