启动服务后活动挂起

时间:2012-05-28 18:41:23

标签: java android android-service android-activity

我在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;
    }

当我点击按钮连接到服务器时,客户端挂起。为什么会这样?

1 个答案:

答案 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