アクティビティが開き、コンテンツを取得するためにREST HTTP APIを呼び出す必要があり、一度更新情報を受け取る典型的なシナリオを想像してみてください。明らかに、API呼び出しは別のスレッドで行う必要がありますが、AsyncTask、IntentService、または別の方法を使用して行う必要があります。なぜですか?IntentServiceまたはAsyncTaskからREST API呼び出しを行いますか?
20
A
答えて
12
this postに記載されているように、IntentService
とResultReceiver
の組み合わせをお勧めします。
このモデルを実装しているGoogle ioschedもご覧ください。 2010年版では、onRetainNonConfigurationInstance
,getLastNonConfigurationInstance
と静的クラスを使用して、構成の変更(つまり、画面の回転)を含めてResultReceiver
を永続化する方法を示します。
私はアプリケーションでこのモデルを正常に実装しました。あなたが提供されたリンクに問題がある場合は私に教えてください。
編集:私は「なぜ」という質問忘れてしまった;)
AsyncTask
がtighly活動にバインドされているが、それがうまく設定変更を処理しません。活動の中で短い仕事(onResume
との間)は大丈夫です。私はHttpClient
を私のREST API呼び出しに使用しています。接続タイムアウトとソケットタイムアウトは20秒に設定されています(悪いモバイルネットワークのため...)。これは、APIコールが40秒続く可能性があることを意味します。あなたは間違いなく、AsyncTask
ではなく、そのような長いタスクをサービスで処理したいと思っています。
関連する問題
- 1. AndroidはREST API呼び出しを行うためにAsyncTaskまたはIntentServiceを使用する必要がありますか?
- 2. mysqlのトリガまたはストアドプロシージャからREST APIを呼び出しますか?
- 3. angular2からREST APIを呼び出す
- 4. 別のAPI呼び出し内でAPI呼び出しを行いますか?
- 5. IntentService、Service、またはAsyncTask
- 6. カレンダープロバイダー:AsyncTaskまたはIntentService?
- 7. AsyncTaskからSensorManagerを呼び出しますか?
- 8. フロントエンドからapi呼び出しを行います
- 9. Androidは:私は別のクラスから、AsyncTaskからgetHoroscope(と呼ばれるメソッド)を呼び出したいAsyncTask
- 10. Android - asynctaskをasyntaskから呼び出す
- 11. $ http.getからRest Apiを呼び出せません
- 12. 別のAsyncTaskからAsyncTaskを呼び出す方法は?
- 13. PostmanからVisual Studio WebtestからREST APIを呼び出す
- 14. AjaxをDocuSign Signature REST APIに呼び出しますか?
- 15. 別のRESTサービスAPIからBot APIを呼び出す場合
- 16. Azure APIからSharePointオンラインREST APIを呼び出す
- 17. Django Restフレームワーク:外部APIから内部APIを呼び出す
- 18. javascriptからdynamic crm 2016 rest apiを呼び出す方法は?
- 19. Android PushNotification IntentServiceとサーバーデータベースからデータを取得し、sqliteデータベースを更新するAsyncTask関数を呼び出す
- 20. Railsはビューから外部APIを呼び出しますか?
- 21. Angular ApplicationからのReST API呼び出し
- 22. REST API呼び出しからの応答の検証
- 23. SharePoint onprem Rest API呼び出しJavaアプリケーションから
- 24. Asp.NetからのRest API呼び出しC#
- 25. Salesforce Rest APIをスケジュールスクリプトのsuitscriptから呼び出す方法
- 26. Java Spring MVCからNode.Js Rest API(POST)を呼び出す
- 27. 会話APIから外部REST Webサービスを呼び出す
- 28. hyperledger composer:トランザクションプロセッサ関数からREST API(GET)を呼び出す
- 29. コントローラcodeigniterからREST APIを呼び出す
- 30. SQL ServerからREST APIを呼び出す
私は@hleroyに質問があります。そのため、オフラインで使用するためにSharedPreferenceを使用してローカルに保存する必要があるため、いつOnResume()、OnStart()、またはOnClickEventListener()を開始しますか。たとえば、Webサービス(私の場合はWCF Web API)を使用してサーバーからUIの200人の学生をリストする必要があります。この行をどこに置くのですか?//インテントサービスを実行する//インテントサービスを実行する//インテントdownloadIntent = newインテント(this.Context、typeof(StudentIntentService)); // this.Context.StartService(downloadIntent); ' –