我们如何访问使用bundle的活动传递的服务数据?

时间:2018-01-02 07:08:33

标签: android android-intent android-service bundle

活动:

Intent service = new Intent(OverlayShowingService.this, shortLayer.class);
service.putExtra("prevact","overlayService");
startService(service);

stopService(service);

什么是绑定服务?我可以从活动中访问我的数据吗?我犯了什么错误?

在服务中:

@Override
public IBinder onBind(Intent intent) {

    return null;
}

public int onStartCommand (Intent Preintent, int flags, int startId) {
    PreActivity = Preintent.getStringExtra("prevact");
    return START_STICKY;
}

1 个答案:

答案 0 :(得分:0)

遵循此解决方案

要准确回答这个问题"如何通过意图从活动发送数据到服务",是否必须覆盖onStartCommand()方法,这是您收到intent对象的地方:

当你创建Service时,你应该覆盖onStartCommand()方法,所以如果仔细查看下面的签名,就会收到传递给它的intent对象:

 public int onStartCommand(Intent intent, int flags, int startId)

因此,从一个活动中,您将创建intent对象以启动服务,然后将数据放在intent对象中,例如,您希望将UserID从Activity传递给Service:

 Intent serviceIntent = new Intent(YourService.class.getName())
 serviceIntent.putExtra("UserID", "123456");
 context.startService(serviceIntent);

当服务启动时,将调用其onStartCommand()方法,因此在此方法中,您可以从intent对象中检索值(UserID),例如

public int onStartCommand (Intent intent, int flags, int startId) {
    String userID = intent.getStringExtra("UserID");
    return START_STICKY;
}

希望它能正常工作。