我在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;
}
当我点击按钮连接到服务器时,客户端挂起。为什么会这样?
答案 0 :(得分:2)
onStartCommand应返回有关如何处理服务的预定义值。 看起来你想要一个START_NOT_STICKY 所以在onStartCommand的return语句中,这就是你要返回的内容。即。
return START_NOT_STICKY;
如果要保存整数a以便在服务中的其他位置使用,请创建一个全局变量并将其设置为等于。
请参阅服务上的Android文档 http://developer.android.com/reference/android/app/Service.html#START_CONTINUATION_MASK