0

私の iPhone アプリでは、アプリケーションがバックグラウンドにあるときにいくつかのクエリを実行したいと考えています。私はすでに ASIHttpRequest を使用してクエリを作成していますが、これは正常に機能しますが、バックグラウンドでそれらをトリガーする方法を見つけようとしています。アプリ デリゲートで、リクエストを行うメソッドへの呼び出しを追加しました。

   [self getItemsFromServer]

getItemsFromServer は非同期リクエストを実行します (シミュレーターでは、アプリケーションをフォアグラウンドに戻すと、このメソッドのログが表示されました)。ある種のタイマーを使用して、このメソッドを 10 分ごとに実行するにはどうすればよいですか (フォアグラウンドに戻るまで、10 分ごとではなく、4 回または 5 回実行する必要があります :-) )?

どうもありがとう、

よろしくお願いします、

リュック

4

3 に答える 3

2

iOS4 では、要求した時間を iOS4 が許可することを前提として、アプリを X 時間実行できます。チェックアウト:バックグラウンドでの長時間実行タスクの完了

具体的には、

中断される前であればいつでも、アプリケーションは beginBackgroundTaskWithExpirationHandler: メソッドを呼び出して、バックグラウンドで実行時間の長いタスクを完了するための余分な時間をシステムに求めることができます。要求が許可され、タスクの進行中にアプリケーションがバックグラウンドに移行した場合、システムはアプリケーションを一時停止する代わりに、追加の時間実行させます。

于 2010-08-27T19:35:31.190 に答える
0

おそらく、タスク フィニッシングを使用してそれを行うことができます。iOS では、スレッドを終了としてマークし、特定の存続時間を与えることができます。これにより、Web サーバーに対してさらにいくつかの呼び出しを行うことができます。

バックグラウンドでのコードの実行をご覧ください

于 2010-07-20T16:01:28.423 に答える
-1

実際には、バックグラウンドで一般的な HTTP 呼び出しを行うことは特に許可されていません。バックグラウンドでアクティブにできるアプリは、オーディオを再生するアプリ、位置情報を取得するアプリ、または VOIP 通話を実行するアプリのみです。利用できるリソースが限られているため、アプリはこれらの限られたケース以外で「機能」してはならないという背景を持つ Apple の全体的な哲学だと思います。これを回避するための推奨される方法は、(ugh) 通知を使用するか、アプリケーションが起動したときに単に更新を行うことです。willcodejavaforfood リファレンスのドキュメントでは、これについて説明しています。

于 2010-07-20T18:03:04.667 に答える