在服务中调用getIntent方法

时间:2012-08-14 09:15:37

标签: android service android-intent

我必须将参数从MyActivity.class传递给TestService.class。 MyActivity是一个Activity类,TestService是我用来发送消息的服务。我必须将参数从Activity传递给服务,但是当我在服务类中调用Intent i = getIntent();时,我收到错误 getIntent()未定义

那么,如何将参数从我的活动发送到服务?

2 个答案:

答案 0 :(得分:54)

像这样开始你的服务;

 Intent ir=new Intent(this, Service.class); 
 ir.putExtra("data", data); 
 this.startService(ir); 

您将数据附加为额外的意图。

然后从服务中检索数据;

data=(String) intent.getExtras().get("data"); 

因此,您可以从onHandleIntent或onStartCommand Intent参数访问您的参数。 (取决于您运行的服务类型)例如;

<强>服务

protected void onStartCommand (Intent intent, int flags, int startId) {
    data=(String) intent.getExtras().get("data"); 
}

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

<强> IntentService

protected void onHandleIntent(Intent intent) {
    data=(String) intent.getExtras().get("data"); 
}

protected abstract void onHandleIntent (Intent intent)

答案 1 :(得分:2)

当您使用意图启动服务(拥有数据)时,会在方法
中收到该意图 onStart(Intent intent, int startId)

onStartCommand (Intent intent, int flags, int startId)
{
this **intent** is your intent with data
}
您的服务

。从此方法接收您的数据,其意图为参数