2009-09-28 136 views
2

我創建了一個與服務器異步通信的應用程序。當應用程序發出服務器請求時,會創建一個帶有「加載」通知的新對話框(活動)。主要活動實現處理服務器響應的方法,並且當主要活動從服務器接收到答案時,我想關閉前臺活動。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)。

回答

5

爲什麼不使用真正的ProgressDialog或其他Dialog?那麼,你需要做的只是dismissDialog(),你就完成了?

如果這是不可接受的,你有行動的兩個主要的課程,我可以看到:

  1. 將您的驗證邏輯到DlgServerRequest類,所以它可以finish()本身。
  2. 把你DlgServerRequest類的實例爲靜態數據成員,以便您的主要活動可以在調用它finish()

如果選擇選項#2,它是null真正重要的是,靜態數據成員,以避免內存泄漏。