2013-11-27 47 views
0

後臺運行的,我需要能夠取消涉及Web請求的任務。 但是當某些事情失敗時,我遇到了一些內存管理和異常處理的問題。 例如:Android的 - 這可能會失敗

我想創建一個用於在用戶設備中搜索應用程序的文本編輯。

所以每當用戶端的關鍵,我要清除當前的搜索任務,並重新啓動搜索。

我得到的問題是在Android 4.4中,當試圖加載應用程序的標籤(獲取它的名稱)時,我得到一個異常。

而且我試着搜索聯繫人,我得到一個invlalid URI,FO r接觸的照片。

我不希望任何幫助處理這個錯誤,我想要一個解決方案,將幫助我忽略這個錯誤(嘗試catach不工作)目前整個ui得到卡住和應用程序崩潰。 我使用執行者服務並在用戶給我一個輸入時調用取消。但這還不夠。

任何意見可以理解,謝謝。

+0

減速評論,sry:如果我處於你的情況,併發布到SO之後,我會嘗試複製Volley API的機制,因爲代碼已打開。 – Poutrathor

回答

1

如果你使用的AsyncTask我想建議你做出像這樣

AsyncTask<Void, Void, Void> a = new AsyncTask<Void, Void, Void>(){ 

     @Override 
     protected Void doInBackground(Void... params) { 
      return null; 
     } 

    }; 
    a.execute(); 

    // at some point you want to cancel just use 
    a.cancel(true); 

你甚至可以把任務一起在列表或數組和循環來取消它,只要你想要的。

+0

我不是,但也許我應該..我打電話的UI處理程序發佈方法與ui線程同步。 –

0

你可以這樣試試:你想要的是通過網絡獲得後臺結果並顯示結果,你可以將一個監聽器註冊到一個任務中。如果在後臺得到結果,你可以使用監聽器的回調方法在視圖中使用show result,如果你不需要當前任務的結果並且想要繼續下一個任務,那麼你只能刪除當前任務的監聽器,所以視圖將會不重裝

這是我的想法,我爲我的英語不好很抱歉,如果你不看,你可以發郵件給我,我的電子郵件是[email protected]從一個小白

相關問題