0

AFNetworking を使用して、サーバーに対して定期的な JSON 要求を実行したいと考えています (ユーザーのプロファイルの更新と変更の確認)。

バックグラウンド ジョブが実行されているが、ユーザーが [戻る] ボタンまたは ViewController を破棄する何かを押した場合はどうなりますか? どうすればこれを管理できますか? つまり、その場合、結果を無視して、ユーザーがビューに戻ったときにもう一度実行したいと思います

ありがとうございました

PS: 完全に機能するコードは必要ありません。ViewController が破棄されたかどうかをバックグラウンド ダウンロード ジョブ (AFNetworking を使用して実行) から知る方法を知りたいだけです。

4

4 に答える 4

1

この質問を確認してください: 多くのネットワーク要求を行う iOS アプリケーションに最適なアーキテクチャ?

簡単な方法は、すべてのリクエストとネットワーク バックグラウンド ジョブを処理するカスタム Network Manager クラスのシングルトン インスタンスを作成することです。どこからでもアクセスでき (ビュー コントローラーなど)、アプリのランタイム全体でインスタンスを保持します。

シングルトンについて: http://en.wikipedia.org/wiki/Singleton_pattern

于 2013-10-21T07:53:09.263 に答える
1

1 つの解決策は、 NSNotificationメカニズムを使用する方法でダウンロードを実装することです。

  1. ViewController をリスナーとして設定します。

  2. ダウンロード プロセスが完了したときに通知を起動するように bg ダウンロードを設定します。

  3. 通知が発生したときに VC がまだ存在する場合は、通知を処理し、必要なことは何でも実行します。周りにいなければ... 何も起こりません。

于 2013-10-21T08:02:01.040 に答える
1

実行中のネットワーク リクエストを停止するには、View Controller のcancelメソッドでネットワーク操作に送信できます。viewWillDisappear:

同様に、ビューが表示されたときにネットワーク リクエストを「自動的に」開始するには、 method を使用しますviewWillAppear:

于 2013-10-21T07:55:02.240 に答える
1

タスクを達成する必要がある場合。つまり、特定のものが表示された場合にのみ、変更を取得しようとしViewControllerます。

メソッドを使用する

-(void) viewDidappear{
// Initialise Your task here 
}

-(void) viewWillDisappear{
// Destoy(Cancel ) the task 
}
于 2013-10-21T07:55:24.177 に答える