我创建了一个应用程序,它是异步通信服务器。当的应用程序使得一个服务器的请求一个新的对话(活动)与"装载"通知的创建。主要的活动实现的方法处理服务器的反应和我想靠近前台活动时的主要活动收到的答复的服务器。

通知的对话创建以下方式:

 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...");
}

和onAuthenticateResponse处理认证响应:

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

我将不胜感激,如果任何人都可以建议的方式关闭该通知的对话(DlgServerRequest)当onAuthenticateUser()是执行。

有帮助吗?

解决方案

为什么不使用一个真实的 ProgressDialog 或者一些其他的 Dialog?然后,你所需要做的是 dismissDialog(), 和你在做什么?

如果这是不可接受的,你有两个主要课程的行动,我们可以看到:

  1. 移动你的身份验证的逻辑进入 DlgServerRequest 类,所以它可以 finish() 本身。
  2. 把你的实例 DlgServerRequest 类进入一个静态数据的会员所以你的主要活动可以叫 finish() 上它

如果你选择的选择,#2,这是真正重要的 null 出于静态数据成员,以避免存储器的泄漏。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top