【问题标题】:Activity hangs after starting a service启动服务后活动挂起
【发布时间】:2012-05-28 18:41:22
【问题描述】:

我有一个在安卓设备上以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;
    }

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

【问题讨论】:

  • 记录、跟踪或调试,看看会发生什么

标签: java android android-service android-activity


【解决方案1】:

onStartCommand 应该返回一个关于如何处理服务的预定义值。 您似乎想要一个 START_NOT_STICKY 因此,在 onStartCommand 中的 return 语句中,这就是您要返回的内容。即

return START_NOT_STICKY;

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多