Java 异步问题

Java 异步问题,java,android,asynchronous,broadcastreceiver,wifimanager,Java,Android,Asynchronous,Broadcastreceiver,Wifimanager,我对这段代码有一个问题,它是异步工作的,它返回false,但为时已晚,因为if语句中的代码在onReceve中完成检查之前无法运行 如何使签入onReceve先完成,然后运行if语句中的代码 class WifiReceiver extends BroadcastReceiver { @Override public void onReceive(Context c, Intent intent) { String action = intent.getActi

我对这段代码有一个问题,它是异步工作的,它返回false,但为时已晚,因为if语句中的代码在onReceve中完成检查之前无法运行

如何使签入onReceve先完成,然后运行if语句中的代码

class WifiReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context c, Intent intent) {
        String action  = intent.getAction();
        if(action.equals(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION)){
            Log.d("WifiReceiver", ">>>>SUPPLICANT_STATE_CHANGED_ACTION<<<<<<");
            int supl_error=intent.getIntExtra(WifiManager.EXTRA_SUPPLICANT_ERROR, -1);
            if(supl_error==WifiManager.ERROR_AUTHENTICATING){
                Log.i("ERROR_AUTHENTICATING", "ERROR_AUTHENTICATING!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
                flag = false;
            }
            else {
                flag = true;
            }
        }
    }
}

if(flag){
//do something
}
class WifiReceiver扩展了BroadcastReceiver{
@凌驾
接收时公共无效(上下文c,意图){
String action=intent.getAction();
if(action.equals(WifiManager.supliciant\u STATE\u CHANGED\u action)){

Log.d(“WifiReceiver”,“>>>>>请求者”\u STATE\u CHANGED\u ACTION将异步完成后要调用的代码放入一个方法中,并在
onReceive()中调用该方法

已经回答了很多类似的问题:通过将
if
放入
onReceive
中,我已经尝试过了,但是if中的代码需要在不同的地方运行,应用程序才能正常工作。我非常确定你的代码甚至不会编译,因为你有一个内部类在更改局部变量和局部变量如果它们被内部类(包括lambdas)使用,则需要为final,但这不是重点。您可能已经通过将
flag
声明为一个类字段来绕过它,但您不会回避需要从
onReceive
方法中的某个地方调用与该标记相关的代码的要求。为什么您希望
if
语句在运行之前等待异步调用完成g?这不是异步的第一点吗?是的,我希望if语句等待,但我不确定它是否是异步的我认为onReceive()正在执行异步的操作我没有任何异步代码我只希望if语句等待onReceive()中的检查是的。“onRecieve”调用是一个钩子,它让您知道它已正确完成。这就是您调用以后要触发的代码的地方。试试看!如果您正在运行的代码需要“onRecieve”返回的参数,那么您需要从那里调用它。