我正在使用iOS應用程序,用戶在線獲取合理大小的數據庫,然後離線使用它。由於設備上的內存限制以及我處理事務性插入的方式,更新和同步需要大約10-15分鐘。在我有對話視圖的同時,打開通知用戶進度,並給他選擇取消和恢復對數據庫的更改。是否有可能在進程運行時阻止iTunes通知
不管怎麼說,而今天測試我注意到,在iTunes的應用程序試圖爲服務器聯繫,並做一些後臺工作,但扔了一個錯誤:
itunesstored[68] <Warning>: Could not load download manifest with underlying error:
Error Domain=NSURLErrorDomain Code=-1001 "Cannot connect
to 112.168.198.2" UserInfo=0x1f8d6150
{NSLocalizedDescription=Cannot connect to 112.168.198.2}
這導致一個對話框,以顯示在一個頂部我已經在顯示,通知用戶iTunes無法連接。
現在,當我點擊'關閉'按鈕時,它也以某種方式關閉了我的對話框,導致只有部分操作在用戶決定停止更新時發生。異步更新保持在後臺進行,而數據庫試圖恢復導致數據庫鎖定的更改,並且我需要終止進程並重新啓動應用程序並進行更新。按照設計,如果發生這樣的事情就會恢復原狀。
現在我注意到我應該對代碼進行一些更改,使數據庫難以鎖定,並且我正在努力。 但我想知道的是:是否有可能禁止iTunes或任何其他進程的這種情況下,在應用程序中的某個關鍵過程發生時,在UI線程上執行任何工作?
iTunes對話框取消按鈕的行爲,即向下傳播到我的對話框中,不能視爲正常或合理。
就像我說的,這表明我的設計存在缺陷。但是這並沒有改變一個事實,即通過所有其他顯示對話框的iTunes對話觸摸事件有點奇怪。 時間方面,數據以JSON格式發給我,我需要解析。並試圖得到比我現在得到更大的JSON字符串是給我一個內存異常。所以我需要更頻繁地獲取更小的版本。數據是一個包含圖像數據的64位字符串。也許不是最好的方式,但在這種情況下,我的雙手被捆綁在一起。 – Hrafn
我不確定多個'UIAlertView'的確切行爲,但我認爲如果iTunes之間有交互,您的警報應該保留。在數據方面,當你將64位圖像數據稱爲字符串時 - 你的意思是base64? –
是的,抱歉意味着base64。我一直無法重現這種情況,所以我無法看到alertview實際發生了什麼。只需盡我所能地盡力處理它。 – Hrafn