我正在使用ProgressDialog在Thread運行時顯示一個微調器。線程完成後,將從視圖中刪除對話框,並將另一個活動壓入堆棧。問題是,對話框沒有被處理掉。當我回到Activity(彈出堆棧)並返回到前一個Activity時,會調用ProgressDialog的同一個實例(當被要求顯示對話框時)。Dispose of ProgressDialog
創建對話框:
protected Dialog onCreateDialog(int id) {
progDialog = new ProgressDialog(this);
progDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progDialog.setMessage("Searching for ..." + txtPart.getText().toString());
// Start thread
progThread = new AcmXmlSearchHelper(handler, txtTitle.getText().toString(), txtPart.getText().toString(), txtSection.getText().toString(), this);
progThread.start();
return progDialog;
}
顯示對話框:
showDialog(getProgressId());
關閉該對話框:
dismissDialog(getProgressId());
最簡單的解決方法是調用一個ProgressDialog(的ShowDialog())具有唯一的ID。但是,我不認爲這是很好的內存使用。我可以在內存中掛載一些對話框。我如何確保物體被丟棄?
THX
你在哪裏調用'showDialog()'?在'onCreate()','onResume()'? – user802421
@Phil:user802421的評論可能是相關的。引用你的問題......「當線程結束後,對話框將從視圖中移除......」 - 如果是這種情況,它真的被解散了,但是當你從第二個Activity返回時你會看到它,那麼它建議首先創建它的代碼被稱爲第二次。順便說一句,有沒有一個原因,你爲什麼使用'Thread'而不是'AsyncTask'?使用'AsyncTask'使用'onPreExecute'和'onPostExecute'方法可以非常容易地處理進度/提醒對話框。 – Squonk
謝謝我將尋找AsyncTask。要回答@ user802421的問題,在onClick事件時調用showDialog()。 – PhillyNJ