2013-02-05 7 views
11

私のアプリケーションにはサービスがあります。AndroidサービスとUIスレッド

このサービスには、サーバにメッセージを送信するオブジェクトとそのオブジェクトを取得して使用するためのオブジェクトがあります。

オブジェクトは、サービスから初期化され、まだときUIは、このオブジェクトを取得し、それを使用する -

これが正しい..ですそれがUIスレッド上で、それを使用するように見えますか?私のオブジェクトを常にサービススレッドから実行できるようにする方法はありますか?

public class ServerMessagesManager extends Service { 
    private ServerMessagesReceiver serverMessageReceiver; 
    @Override 
    public void onCreate() { 
     super.onCreate(); 
     this.serverMessageReceiver = new ServerMessagesReceiver(app); 
    } 

    public ServerMessagesReceiver getServerMessagesReceiver() 
    { 
     return serverMessageReceiver; 
    } 
} 
+0

サービスはuiスレッドで実行されます。分離されたスレッド上でプロセスの一部を実行するサービスのインテントサービスを見てください – njzk2

答えて

23

利用IntentServiceの代わりServiceServiceでネットワーク通話を行うと、UIが停止します。したがって、別のThreadを使用しているので、IntentServiceを使用してください。

サーバーメッセージがいつデータを取得するかはわかりません。ネットワークコールがまだ進行中である限りオブジェクトにアクセスすると、NullPointerExceptionがスローされる可能性があります。サーバーが応答するたびにIntentを発射するには、BroadcastReceiverを使用します。

関連する問題