2013-05-14 127 views
0

我知道的奇怪的問題。我正在爲ios開發一個應用程序,以作爲商業中心的訪問者。該應用程序提供了一個內部更新系統,使用一個xml系統,對於一長串的原因,在網絡響應緩慢或快速的情況下工作方式不同。這種差異表現在ui的不同類型的故障中,並且我只能選擇在用戶具有較慢連接或快速連接的情況下具有較好的性能,對於這兩種解決方案(一種用於快速情況下的問題,一個用於緩慢的情況)以解決我遇到的問題,在另一種情況下涉及一個存在故障的情況。 在這種情況下,我應該贊成屬於快速或慢速連接的用戶,爲什麼?爲ios開發應用程序我應該支持快速或慢速連接?

編輯:我會盡力解釋這個問題。我有一個需要通過xml更新的視圖。當我啓動視圖時,我嘗試訪問xml以控制更新是否需要完成這一簡單事實需要時間。我添加了一個活動指示器,但它不能正常工作,因爲網絡變慢,活動指示器顯示需要更多時間,結果用戶不得不時間考慮應用程序被凍結,嘗試觸摸他不曾碰觸的按鈕(這不起作用,並使他認爲應用程序不起作用)等等。所以我使用performSelectorInBackground爲了添加活動指示器儘可能快,我可以在SLOW連接的情況下正常工作。在FAST連接情況下,由於連接速度,即使控制是否必須完成控制,該活動顯示得如此之快以致於它看起來很快,幾乎沒有時間,導致它顯示皮秒的活動指示符,給出一個可怕的圖形效果是要避免的。爲了避免在快速的情況下這個問題我加了

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.000001 * NSEC_PER_SEC), dispatch_get_current_queue(), ^{ code to add the activity indicator; }); 

,並以這種方式,我沒有FAST情況下的圖形化問題,但在緩慢的情況下dispatch_after的執行(我猜)太慢放慢活動指示器的顯示,導致應用程序被凍結的印象。所以我的手被捆綁,我不知道它是什麼。

+2

我完全不理解這個問題,不管它們連接緩慢還是快速都不重要。如果他們需要下載並處理它,則會顯示一個活動指示器,並阻止他們觸摸該應用直至完成。爲什麼這對速度較慢的v會有所不同? – 2013-05-14 10:23:44

+0

http://blog.stackoverflow.com/2010/10/asking-better-questions/ – Ushan87 2013-05-14 10:26:26

+1

如果您以這種方式支持慢速連接,那麼它會更好,您可以同時獲得快速和慢速連接用戶,並且性能得到了保證兩個用戶。相反,如果你想爲快速連接優化你的應用程序,那麼你肯定會失去連接速度慢的用戶。 – 2013-05-14 10:27:49

回答

2

您可以確定用戶具有哪種類型的連接(Edge/3G或Wi-Fi)並針對每種連接執行不同的方法。示例代碼here。通常Wi-Fi速度更快,更便宜,因此您可以爲其提供「快速代碼」。

P.S.我仍然不確定你在說什麼。演出內容嗎?沒有一些細節,很難給出適當的建議,但仍然:

1)您可以在後臺下載需要的東西。

2)如果是關於帶圖像/視頻/音樂的菜單 - 首先下載帶有標題的列表,然後下載媒體文件。 (就像安卓市場上慢速連接一樣)。

編輯:所有的 首先,不要混淆視圖和網絡任務。所有的下載都應該在另一個線程的ViewController之外完成。 您可以每N分鐘下載一次新的XML(或者在您的請求中使用if-修改),並在用戶下次嘗試查看視圖時顯示它。你多久使用一次新的XML?這很重要,也許你可以避免在UI drawing的同時下載它。祝你好運!

+0

這是一個好主意,我會探索它。我已經更新了答案以解釋問題。 – 2013-05-14 10:59:57

+0

否則,我不能在背景中做我不得不做的事情,必須在我繼續使用代碼的時候完成。緩慢的代碼控制,如果一個更新必須完成,並且不需要時間進行快速連接,並且在緩慢的情況下幾個(看起來很長!)秒。 – 2013-05-14 11:06:10

+0

聽起來像你需要設置微調旋轉,然後再嘗試訪問遠程xml – Nick 2013-05-14 11:27:45

1

由於目標是一個商業中心的訪客,你應該總是快速連接工作給予了更好的用戶體驗..用戶不喜歡等待很長一段時間在設備上加載屏幕..但你也應該解決負面情況,即連接速度緩慢。您需要根據需求確定優化時間,以便您只需要顯示特定時間的加載屏幕,如果連接速度較慢,則可以用「再試一次」消息來終止連接。

相關問題