将数据从活动发送到服务

时间:2013-03-05 21:11:28

标签: android android-service

如何将当前Activity的数据发送到特定时间运行的后台Service类?我尝试设置为Intent.putExtras(),但我没有在Service

中获取它

调用Activity的{​​{1}}类中的代码。

Service

Intent mServiceIntent = new Intent(this, SchedulerEventService.class); mServiceIntent.putExtra("test", "Daily"); startService(mServiceIntent); 课程中的代码。我很想投入ServiceonBind()。这些方法都不会打印该值。

onStartCommand()

2 个答案:

答案 0 :(得分:4)

您的代码应为onStartCommand。如果您从未致电bindService您的活动onBind将不会被致电,请使用getStringExtra()代替getExtras()

@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
    Toast.makeText(this, "Starting..", Toast.LENGTH_SHORT).show();
    Log.d(APP_TAG,intent.getStringExtra("test"));
    return START_STICKY; // or whatever your flag
}

答案 1 :(得分:1)

如果要传递可以放入Intent的原始数据类型,我建议使用IntentService。要启动IntentService,请输入您的活动:

startService(new Intent(this, YourService.class).putExtra("test", "Hello work");

然后创建一个扩展IntentService类的服务类:

public class YourService extends IntentService {

String stringPassedToThisService;

public YourService() {
    super("Test the service");
}

@Override
protected void onHandleIntent(Intent intent) {

    stringPassedToThisService = intent.getStringExtra("test");

    if (stringPassedToThisService != null) {
        Log.d("String passed from activity", stringPassedToThisService);
    // DO SOMETHING WITH THE STRING PASSED
    }
}