私が理解している限り、サービスはバックグラウンドプロセスであるため、クラスに参加していますが、本質的に意味がありませんNetworkOnMainThreadException
。Service
Serviceメソッドでは、静的ヘルパーメソッドを呼び出してデータをダウンロードしています。DefaultHttpClientも使用しています。
何が起きてる?
私が理解している限り、サービスはバックグラウンドプロセスであるため、クラスに参加していますが、本質的に意味がありませんNetworkOnMainThreadException
。Service
Serviceメソッドでは、静的ヘルパーメソッドを呼び出してデータをダウンロードしています。DefaultHttpClientも使用しています。
何が起きてる?
onStartCommand()
のUIスレッドで実行されますService
。IntentServiceService
を使用するか、 (Handler
/ Runnable
、 )で他のスレッドメソッドを使用してみてくださいAsyncTask
。
サービスコールバックはすべてメインスレッド、別名UIスレッドで実行されます。バックグラウンド作業を行う場合は、スレッドを開始するか、IntentServiceのonHandleIntent(Intent i)を使用します。
アプリケーションがメインスレッドでネットワーク操作を実行しようとしたときにスローされる例外。
これは、HoneycombSDK以降を対象とするアプリケーションに対してのみスローされます。以前のSDKバージョンを対象とするアプリケーションは、メインのイベントループスレッドでネットワークを構築できますが、お勧めできません。
http://developer.android.com/reference/android/os/NetworkOnMainThreadException.html
私はこれを使用してこの問題を解決します:
public int onStartCommand(Intent intent, int flags, int startId) {
RefreshDBAsync task = new RefreshDBAsync(this);
task.execute();
return START_STICKY;
}
RefreshDBAsyncは、5分ごとにサーバーにリクエストを送信しています