方式一:Activity向Service传递数据
在activity中,设置要传递的值。
Intent intent = new Intent(Main.this, DownloadService.class);
intent.putExtra("apkUrl", apkUrl);
startService(intent);
然后在service中的onStart()函数中获取该值
@Override
public void onStart(Intent intent, int startId) {
// TODO Auto-generated method stub
super.onStart(intent, startId);
apkUrl = intent.getStringExtra("apkUrl");
}
我们需要在Mainfeist文件中注册这个service
销毁Service写在activity的onDestroy()方法里:
protected void onDestroy() {
Main.this.stopService(new Intent(Main.this, DownloadService.class));
super.onDestroy();
}
补充:
也可以从public int onStartCommand(Intent intent, int flags, intstartId)中取出从activity中传过来的值。intent.getExtra()获得bundle对象,可从中取值。
也可以用bindService(intent,conn,BIND_AUTO_CREATE);传值,把要传的值绑定在intent里,在service的public IBinderonBind(Intent intent) 方法里取得intent。
可以在service里面注册一个广播,在activity里sendbroadcast(intent)传值。