Android:如何从活动活动关闭前台活动?
问题描述:
我创建了一个与服务器异步通信的应用程序。当应用程序发出服务器请求时,会创建一个带有“加载”通知的新对话框(活动)。主要活动实现处理服务器响应的方法,并且当主要活动从服务器接收到答案时,我想关闭前台活动。Android:如何从活动活动关闭前台活动?
通知对话框创建以下方式:
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
}
}
如果有人可以建议一种方法,我将不胜感激在执行onAuthenticateUser()时关闭通知对话框(DlgServerRequest)。
答
为什么不使用真正的ProgressDialog
或其他Dialog
?那么,你需要做的只是dismissDialog()
,你就完成了?
如果这是不可接受的,你有行动的两个主要的课程,我可以看到:
- 将您的验证逻辑到
DlgServerRequest
类,所以它可以finish()
本身。 - 把你
DlgServerRequest
类的实例为静态数据成员,以便您的主要活动可以在调用它finish()
如果选择选项#2,它是null
真正重要的是,静态数据成员,以避免内存泄漏。