2011-06-17 51 views
1

我有一個警告對話框被彈出,它允許一個人輸入密碼,然後選擇是提交或取消了(正面和負面按鈕,像往常一樣)。目前,當他們點擊登錄(pos選擇)時,無論他們輸入什麼內容,它都會將它們發送到下一頁。 (代碼粘貼在下面)。Android的 - 如何通過的EditText價值後臺進程,然後開始新的活動一旦結束

我需要改變的幫助,是我想從捕獲的EditText密碼實際上將送入解密這是坐在資產文件夾中的XML文件的活動。捕獲的密碼是加密的關鍵。可以有人提供一些幫助,以便如何修改我的代碼:

a)捕獲密碼並將其發送給解密機制(我想這是用onActivityResult完成的?) b)在解密中進行解密背景(我和一個進度條或裝載機猜得到嗎?我真的有在Android的線程新手) C)一旦XML被解密,然後傳遞關閉的新的活動在我的代碼可以在內存中讀取了解密的XML。

任何幫助非常感謝!

.setPositiveButton( 「登錄」,新DialogInterface.OnClickListener(){ 公共無效的onClick(DialogInterface對話,詮釋whichButton){

     Intent openBrowsePage = new Intent(); 
         openBrowsePage .setClassName("com.myproject.android", "com.myproject.android.BrowsePage"); 
         startActivity(openBrowsePage); 

        } 
       }) 

回答

1

這是一個AsyncTask的經典工作。 from documentation

AsyncTask支持正確和簡單地使用UI線程的 。該類允許 執行後臺操作, 在UI線程 上發佈結果,而無需操縱線程 和/或處理程序。

您不需要爲這個其他活動或服務。

Asynctask文檔有一些示例代碼,但簡而言之,您將繼承AsyncTask並覆蓋doInBackground方法以執行後臺操作(保證在後臺線程中運行)。您可能還想在此方法中調用publishProgress以表明您已經使用後臺操作取得了進展。然後你會從這個方法返回計算結果(在你的情況下是一個XML緩衝區)。

您可能想要覆蓋OnProgressUpdate並相應地更新ProgressBar。此方法將在UI線程中響應您的背景方法調用而運行。

此外,您希望覆蓋在主線程上完成後臺操作後保證運行的onPostExecuteMethod。您將doInBackground的結果作爲此方法的參數。

請注意,此API可用於級別3(android 1.5)及更高版本。

0

您應該使用一個服務,而不是一個活動做背景您可以將您從EditText獲得的密碼作爲您用於啓動服務的意圖傳遞給服務。

要做到這一點,最簡單的方法是擴展IntentService並在那裏解密。使用調用按鈕監聽器中的服務。在加密結束時,使用startActivity調用新的活動。

編輯:我要澄清我的答案。 Rory是正確的 - AsyncTask應該用於Activity中的後臺任務。區分後臺任務是否應使用AsyncTask或Service的方法應取決於在退出活動時是否應執行任務。例如,如果我開始在我的Activity的後臺下載文件,並且即使離開Activity,我也希望繼續下載,您應該使用Service。另一方面,如果發佈當前無線信號強度以顯示在您的活動中,則使用AsyncTask。

相關問題