Android:如何从活动活动中关闭前台活动?

Posted

技术标签:

【中文标题】Android:如何从活动活动中关闭前台活动?【英文标题】:Android: How to close foreground activity from active activity? 【发布时间】:2010-12-02 00:12:25 【问题描述】:

我创建了一个与服务器异步通信的应用程序。当应用程序向服务器发出请求时,会创建一个带有“正在加载”通知的新对话框(活动)。主要活动实现了处理服务器响应的方法,我想在主要活动收到来自服务器的答复时关闭前台活动。

通知对话框的创建方式如下:

 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) 的方法,我将不胜感激。

【问题讨论】:

【参考方案1】:

为什么不使用真正的ProgressDialog 或其他Dialog?那么,您只需dismissDialog(),就完成了?

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

    将您的身份验证逻辑移动到DlgServerRequest 类中,这样它就可以finish() 本身。 将您的 DlgServerRequest 类实例放入静态数据成员中,以便您的主要活动可以在其上调用 finish()

如果您选择选项#2,那么null 删除该静态数据成员以避免内存泄漏非常重要。

【讨论】:

以上是关于Android:如何从活动活动中关闭前台活动?的主要内容,如果未能解决你的问题,请参考以下文章

如何从通知中关闭应用程序

关闭另一个活动

应用程序在主要活动中关闭onBackPressed

什么时候在Android中关闭光标?

如何在 Kotlin 中关闭 Android 应用程序

当活动从后台(暂停)到前台时重新创建 Android 活动