私は多くのAPIフェッチを行うアプリケーションを開発していますが、インターネット接続が非常に低い場合、たとえば5 kbpsの場合、main
メソッドでアプリがクラッシュします。たくさんのリクエストがキューに入っていて、OSがアプリを終了したときに起こると思います。ASIHTPPRequestと非同期ブロックベースのリクエストを使用しています。
どうすれば問題を解決できますか?
私は多くのAPIフェッチを行うアプリケーションを開発していますが、インターネット接続が非常に低い場合、たとえば5 kbpsの場合、main
メソッドでアプリがクラッシュします。たくさんのリクエストがキューに入っていて、OSがアプリを終了したときに起こると思います。ASIHTPPRequestと非同期ブロックベースのリクエストを使用しています。
どうすれば問題を解決できますか?
アプリ全体で単一のネットワーク キューを使用する必要があります。インターネット接続に大きく依存するアプリは、同時ネットワーク操作の数を最適化する必要があります。残念ながら、ASIHTPPRequest
フレームワークはこれを行いません。MKNetworkKit
特にモバイルアプリを念頭に置いて構築されたものを使用することをお勧めします.
ほとんどのモバイル ネットワーク (3G) では、特定の IP アドレスから同時に 2 つを超える HTTP 接続を許可していません。エッジはさらに悪いです。ほとんどの場合、複数の接続を開くことはできません。この制限は、従来のホーム ブロードバンド (Wifi) ではかなり高くなります (6)。通常、iDevice はほとんど 3G ネットワークに接続されています。つまり、同時にアップロードできる写真は 2 つだけです。今、痛いのはアップロード速度の遅さではありません。
このアップロード操作がバックグラウンドで実行されているときに、写真のサムネイルをロードするビュー (別のビューなど) を開くと、実際の問題が発生します。アプリ全体でキューのサイズを適切に制御しないと、サムネイルの読み込み操作がタイムアウトするだけで、実際には適切な方法ではありません。これを行う正しい方法は、サムネイルの読み込み操作を優先するか、アップロードが完了してサムネイルを読み込むまで待つことです。これには、アプリ全体で単一のキューが必要です。MKNetworkKit は、そのインスタンスごとに単一の共有キューを使用することで、これを自動的に保証します。MKNetworkKit 自体はシングルトンではありませんが、共有キューはシングルトンです。