У меня есть сервер, работающий на устройстве 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;
}
Когда я нажимаю кнопку для подключения к серверу, клиент зависает. Почему это происходит?
Предполагается, что onStartCommand вернет предопределенное значение того, как обращаться с сервисом. Похоже, вам нужен START_NOT_STICKY. Итак, в вашем возвратном заявлении в onStartCommand это то, что вы возвращаете. т.е.
return START_NOT_STICKY;
Если вы хотите сохранить целое число a для использования в другом месте службы, создайте глобальную переменную и установите ее равной a.
Обратитесь к Документам по Android на службе http://developer.android.com/reference/android/app/Service.html#START_CONTINUATION_MASK