如何将当前Activity
的数据发送到特定时间运行的后台Service
类?我尝试设置为Intent.putExtras()
,但我没有在Service
类
调用Activity
的{{1}}类中的代码。
Service
Intent mServiceIntent = new Intent(this, SchedulerEventService.class);
mServiceIntent.putExtra("test", "Daily");
startService(mServiceIntent);
课程中的代码。我很想投入Service
和onBind()
。这些方法都不会打印该值。
onStartCommand()
答案 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
}
}