0

私が知っている奇妙な質問。私は、商業センターの訪問者をターゲットとする ios 用のアプリを開発しています。アプリは、xml システムを使用して内部更新システムを提供します。これは、ネットの応答が遅い場合と速い場合で、さまざまな理由から動作が異なります。違いは、UI のさまざまなタイプの誤動作にあり、ユーザーの接続が遅い場合、または高速な場合にのみ、2 つの解決策 (1 つは高速な場合の問題、 1 つは遅いケースの場合) 私が抱えている問題については、もう 1 つのケースでは誤動作の存在が関係しています。この場合、高速または低速の接続に属するユーザーを優先することになっていますが、その理由は何ですか?

編集:問題を説明しようとします。xml 経由で更新する必要があるビューがあります。ビューを起動すると、更新が必要かどうかを制御するためにxmlにアクセスしようとするという単純な事実に時間がかかります。アクティビティインジケーターを追加しましたが、ネットが遅くなるにつれて、アクティビティインジケーターが表示されるまでに時間がかかるようで、ユーザーがアプリがフリーズしていると考える時間が必要になるため、うまく機能しません。試してみてください彼が触れてはならないボタンをタッチするには(それは機能せず、アプリが機能しないと彼に思わせます)など。だから私はできる限り速くアクティビティインジケータを追加するために performSelectorInBackground を使用しました.SLOW接続の場合は正常に動作します. FAST 接続の場合、アクティビティは非常に高速に表示されるため、接続の速度が原因で、更新を行う必要があるかどうかの制御にほとんど時間がかからない場合でも表示されます。ピコ秒のアクティビティインジケーターを表示させ、避けるべきひどいグラフィック効果を与えます。FASTの場合の問題を回避するために、追加しました

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

このようにして、FASTの場合のグラフィカルな問題はありませんが、SLOWの場合、dispatch_after(推測)の実行により、アクティビティインジケーターの表示が遅くなりすぎて、アプリがフリーズしたような印象を受けます。だから私の手は縛られていて、私はそれが何を好むのか分かりません。

4

2 に答える 2

2

ユーザーが使用している接続の種類 (Edge/3G または Wi-Fi) を特定し、接続の種類ごとに異なる方法を実行できます。サンプルコードはこちら。通常、Wi-Fi は高速で安価なので、「高速コード」を提供できます。

PS私はあなたが何について話しているのかまだわかりません。パフォーマンス?いくつかの詳細なしに適切なアドバイスを与えることは困難ですが、それでも:

1) 必要なものをバックグラウンドでダウンロードできます。

2) 画像/動画/音楽を含むメニューの場合 - タイトルを含むリストのダウンロードから開始し、その後、メディア ファイルをダウンロードします。(Androidマーケットが低速接続で行うように)。

編集: まず第一に、ビューとネットワーク タスクを混在させないでください。すべてのダウンロードは、別のスレッドで ViewController の外で行う必要があります。N 分ごとに新しい XML をダウンロードして (またはリクエストで if-modified を使用して)、次にユーザーがビューを表示しようとしたときにそれを表示できます。どのくらいの頻度で新しい XML を取得しますか? 重要なことですが、UI の描画と同時にダウンロードすることを避けることができるかもしれません。幸運を!

于 2013-05-14T10:52:57.813 に答える
1

ターゲットは商業センターの訪問者であるため、より良いユーザー エクスペリエンスを提供するために常に高速接続で作業する必要があります..ユーザーはデバイスの読み込み画面で長時間待つことを好みません..しかし、否定的なシナリオにも取り組む必要があります。 、つまり、接続が遅い。要件に応じて最適化された時間を決定する必要があるため、その特定の時間だけロード画面を表示する必要があり、それでも接続が遅い場合は、「再試行」メッセージで接続を終了できます。

于 2013-05-14T12:43:27.893 に答える