onReceve에서 검사가 완료되기 전에 if 문에서 코드가 실행되기 때문에 비동기로 작동하고 있음을 나타내는이 코드에 문제가 있습니다.비동기에 문제가 발생했습니다.
어떻게하면 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
}
이미 많은 질문에 답변 됨 : 'onReceive' 안에'if'를 넣으십시오. – Selvin
if를 시도했지만 if의 코드가 제대로 작동하기 위해 다른 장소에서 실행해야합니다. – shotofop
저는 로컬 변수를 변경하는 내부 클래스가 있고 코드가 내부 클래스 (람다를 포함하지만 점 옆에있는)에서 사용되는 경우 로컬 변수가 최종 변수 여야하므로 코드가 컴파일되지 않을 것입니다. 'flag'를 클래스 필드로 선언함으로써 주위를 둘러 보았을 지 모르지만, 플래그와 관련된 코드가'onReceive' 메소드의 어딘가에서 호출되어야한다는 요구 사항을 피할 수는 없습니다. –