4

私が理解している限り、サービスはバックグラウンドプロセスであるため、クラスに参加していますが、本質的に意味がありませんNetworkOnMainThreadExceptionService

Serviceメソッドでは、静的ヘルパーメソッドを呼び出してデータをダウンロードしています。DefaultHttpClientも使用しています。

何が起きてる?

4

4 に答える 4

5

onStartCommand()のUIスレッドで実行されますServiceIntentServiceServiceを使用するか、 (Handler/ Runnable、 )で他のスレッドメソッドを使用してみてくださいAsyncTask

于 2012-02-01T15:11:43.710 に答える
0

サービスコールバックはすべてメインスレッド、別名UIスレッドで実行されます。バックグラウンド作業を行う場合は、スレッドを開始するか、IntentServiceのonHandleIntent(Intent i)を使用します。

于 2012-02-01T15:11:34.627 に答える
0

アプリケーションがメインスレッドでネットワーク操作を実行しようとしたときにスローされる例外。

これは、HoneycombSDK以降を対象とするアプリケーションに対してのみスローされます。以前のSDKバージョンを対象とするアプリケーションは、メインのイベントループスレッドでネットワークを構築できますが、お勧めできません。

http://developer.android.com/reference/android/os/NetworkOnMainThreadException.html

于 2012-07-25T21:55:39.227 に答える
0

私はこれを使用してこの問題を解決します:

public int onStartCommand(Intent intent, int flags, int startId) {

    RefreshDBAsync task = new RefreshDBAsync(this);
    task.execute();

    return START_STICKY;
}

RefreshDBAsyncは、5分ごとにサーバーにリクエストを送信しています

于 2017-04-22T18:25:59.443 に答える