当前位置: 代码迷 >> Android >> 如何往一个service传入activity中上下文对象
  详细解决方案

如何往一个service传入activity中上下文对象

热度:4   发布时间:2016-04-28 02:38:09.0
怎么往一个service传入activity中上下文对象。
就是我要在service根据传入进来的context进行设置界面。利用构造函数不知道怎么弄。在service中不能进行setcontentview()。
就是为了解决这个问题。
------解决思路----------------------
public class MyService extends Service{
private Context context;

public MyService(Context context) {
this.context = context;
}

//....to do something
}

------解决思路----------------------
service和activity都是继承ContextWrapper,所以他们本身就是一个Context。如果是想实现在service中更新某个activity的界面,有一种方案是,在service发送广播,然后在activity拦截广播,并进行相应的更新UI。
------解决思路----------------------

public class MyService extends Service
{
MyBinder binder = null;

@Override
public IBinder onBind(Intent intent)
{
if(binder==null){
binder = new MyBinder();
}
Toast.makeText(getApplicationContext(), "返回bind对象", Toast.LENGTH_SHORT).show();
return binder;
}

class MyBinder extends Binder
{
String stringToSend = "绑定service";

public MyService getService()
{
return MyService.this;
}
}
Context context;
public void setContext(Context context){
this.context=context;
}
}

绑定时

MyService mService= null;
ServiceConnection conn=new ServiceConnection()
{

@Override
public void onServiceDisconnected(ComponentName name)
{
// TODO Auto-generated method stub

}

@Override
public void onServiceConnected(ComponentName name, IBinder service)
{
MyBinder binder = (MyBinder) service;
mService=binder.getService();
mService.setContext();
}
}; 
};

这样应该也可以传,不过配合的是service的绑定
  相关解决方案