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 语句中,这就是您要返回的内容。IE

return START_NOT_STICKY;

如果您想保存整数 a 以在服务中的其他地方使用,请创建一个全局变量并将其设置为等于 a。

参考 Android Docs on Service http://developer.android.com/reference/android/app/Service.html#START_CONTINUATION_MASK

于 2012-05-28T19:12:35.470 回答