为了账号安全,请及时绑定邮箱和手机立即绑定

使用Intent将数据从Activity传递到Service

使用Intent将数据从Activity传递到Service

POPMUISE 2019-09-02 10:06:35
如何获取Service从调用传递的Android 中的数据Activity?
查看完整描述

3 回答

?
噜噜哒

TA贡献1784条经验 获得超7个赞

第一个上下文(可以是活动/服务等)


对于Service,您需要覆盖onStartCommand,您可以直接访问intent:


Override

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

你有几个选择:


1)使用包从意向:


Intent mIntent = new Intent(this, Example.class);

Bundle extras = mIntent.getExtras();

extras.putString(key, value);  

2)创建一个新的Bundle


Intent mIntent = new Intent(this, Example.class);

Bundle mBundle = new Bundle();

mBundle.extras.putString(key, value);

mIntent.putExtras(mBundle);

3)使用Intent 的putExtra()快捷方法


Intent mIntent = new Intent(this, Example.class);

mIntent.putExtra(key, value);

新上下文(可以是活动/服务等)


Intent myIntent = getIntent(); // this getter is just for example purpose, can differ

if (myIntent !=null && myIntent.getExtras()!=null)

     String value = myIntent.getExtras().getString(key);

}

注意: Bundles对所有基本类型,Parcelables和Serializables都有“get”和“put”方法。我只是将Strings用于演示目的。


查看完整回答
反对 回复 2019-09-02
?
千万里不及你

TA贡献1784条经验 获得超9个赞

如果您绑定了您的服务,您将获得Extra in onBind(Intent intent)。


活动:


 Intent intent = new Intent(this, LocationService.class);                                                                                     

 intent.putExtra("tour_name", mTourName);                    

 bindService(intent, mServiceConnection, BIND_AUTO_CREATE); 

服务:


@Override

public IBinder onBind(Intent intent) {

    mTourName = intent.getStringExtra("tour_name");

    return mBinder;

}


查看完整回答
反对 回复 2019-09-02
  • 3 回答
  • 0 关注
  • 1213 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信