문제

서버와 비동기로 통신하는 응용 프로그램을 만들었습니다. 응용 프로그램이 서버에 "로드"알림이 생성 된 새 대화 상자 (활동)를 요청할 때. 주요 활동은 서버 응답을 처리하는 방법을 구현하며 기본 활동이 서버로부터 답을받을 때 전경 활동을 닫고 싶습니다.

알림 대화 상자는 다음과 같은 방식으로 생성됩니다.

 private void showServerRequestDialog(String actionLabel){
    Intent intent = new Intent(this, DlgServerRequest.class);
    intent.putExtra(SERVER_REQUEST_ACTION, actionLabel);
    startActivity(intent);

}

따라서 사용자가 인증을 시도하면 다음 방법이 다음과 같습니다.

private void authenticateUser(String IMEI, String username, String password){
    mEncoderConnection.authenticateRequest(IMEI, username, password);
    showServerRequestDialog("Authenticating...");
}

그리고 인증 응답을 처리합니다.

public void onAuthenticateResponse(AuthenticateResponse pkg) {
    //code for response handling
    //TODO: close ServerRequestDialog
    }
}

OnauthenticateUser ()가 실행될 때 누군가가 알림 대화 상자 (DLGServerRequest)를 닫는 방법을 제안 할 수 있다면 감사하겠습니다.

도움이 되었습니까?

해결책

진짜를 사용하지 않는 이유는 무엇입니까? ProgressDialog 또는 다른 Dialog? 그러면, 당신이해야 할 일은 있습니다 dismissDialog(), 그리고 당신은 끝났습니까?

용납 할 수없는 경우, 내가 볼 수있는 두 가지 주요 행동 과정이 있습니다.

  1. 인증 로직을 DlgServerRequest 클래스, 그래서 가능합니다 finish() 그 자체.
  2. 당신의 인스턴스를 넣으십시오 DlgServerRequest 주요 활동이 호출 할 수 있도록 정적 데이터 멤버로 클래스 finish() 그 위에

옵션 #2를 선택하면 정말 중요합니다. null 메모리 누출을 피하기 위해 해당 정적 데이터 멤버.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top