2012-03-31 100 views
1

我试图通过意图将数据从活动发送到服务。如何将数据从活动发送到服务

这是在我的活动课

Intent i= new Intent(this,SampService.class); 

    i.putExtra("startTimeHour", timePicker1.getCurrentHour()); 
    i.putExtra("endTimeHour", timePicker2.getCurrentHour()); 
    i.putExtra("startTimeMinute",timePicker1.getCurrentMinute()); 
    i.putExtra("endTimeMinute", timePicker2.getCurrentMinute()); 
    startActivity(i); 

代码这是我的服务类的代码

public class SampService extends Service implements Runnable { 

@Override 
public IBinder onBind(Intent intent) { 
    // TODO Auto-generated method stub 
    return null; 
} 
public void onCreate() 
{ 
    Toast.makeText(getApplicationContext(), "Service Created", Toast.LENGTH_LONG).show(); 
    String startTimeHour,startTimeMinute,endTimeHour,endTimeMinute; 



} 
public void onStart() 
{ 
    Thread t=new Thread(this); 
    t.start(); 
} 
public void run() { 



} 

回答

4

SampleService是服务,您应该使用startService(i);而不是startActivity(i);然后可以在服务中检索附加到意图的数据。

2

你不意图从活动将数据发送到服务。该活动需要绑定到该服务,然后您在活页夹上调用方法。请参阅http://developer.android.com/guide/topics/fundamentals/services.htmlhttp://developer.android.com/reference/android/app/Service.html

另一种选择是让您的活动向数据发送广播意图,您的服务可以设置BroadcastReceiver来侦听。

你想用什么服务?也许有一个更容易或更轻的解决方案来解决您的问题。

+0

“您不会将数据从活动发送到具有意向的服务。” - 是的你是。它是命令模式,使用'startService()'以'Intents'的形式发送命令。引用[文档](http://developer.android.com/guide/topics/fundamentals/services.html)“启动服务的多个请求会导致对服务的onStartCommand()的多个相应调用。但是,只有一个请求停止服务(使用stopSelf()或stopService())来停止它。“这与'IntentServices'很好地结合。 – CommonsWare 2012-03-31 14:32:15

+0

@David Wassler我正在使用服务检查时间值,并在我的开始和结束时间之间启用无声模式 – 2012-03-31 14:57:38

+0

好的,那么即使您的活动不是,也需要服务才能运行。 @Akhil的解决方案应该可以工作。 [这个问题/答案](http://stackoverflow.com/questions/4252371/unable-to-get-data-from-activity-to-service)显示了如何在'startService()'中使用的Intent中传递值以及如何在服务中的onStartCommand()中检索它们。 – 2012-03-31 15:50:12

相关问题