1

AndroidデバイスでサーバーをService. ユーザーがクライアント番号を入力すると、サービスが開始されます。アクティビティからサービスにデータを渡す代わりに、これを処理するより良い方法はありますか?

さらに、上記のアプローチを使用すると、クライアントがハングしてアプリケーションを強制的に破棄するように見えます。コードは次のとおりです。

String a = clients.getText().toString();
Bundle bundle = new Bundle();
bundle.putCharSequence("NumberOfClients", a);           
Intent intent = new Intent(Manage.this, Server.class);
intent.putExtras(bundle);
Log.d("hi", a);
startService(intent);

そして、ここにサーバーがあります:

@Override
public void onCreate() 
{                         
    Thread server = new Thread(new ServerThread());
    server.start();                 
}

public int onStartCommand(Intent intent, int flags, int startId) {
     super.onStartCommand(intent, flags, startId);       
     Bundle bundle = new Bundle();
     bundle = intent.getExtras();
     numberofclients = (String) bundle.getCharSequence("NumberOfClients");
     int a = Integer.parseInt(numberofclients);     

     return a;
    }

ボタンを押してサーバーに接続すると、クライアントがハングします。なぜこうなった?

4

1 に答える 1

2

onStartCommand は、サービスの処理方法について定義済みの値を返すことになっています。START_NOT_STICKY が必要なようです。onStartCommand の return ステートメントでは、それが返されます。すなわち

return START_NOT_STICKY;

サービス内の別の場所で使用するために整数 a を保存する場合は、グローバル変数を作成し、それを a に等しく設定します。

サービスの Android ドキュメントを参照してください http://developer.android.com/reference/android/app/Service.html#START_CONTINUATION_MASK

于 2012-05-28T19:12:35.470 に答える