第一步通过扩展 Binder 类并从 onBind() 返回它的一个实例来创建接口
public class MyBinder extends Binder{
public BinderService getService(){
return BinderService.this;
}
}
@Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service.
return new MyBinder();
}
第二步自定义服务端方法
public List getRandomNumber(){ List resArr=new ArrayList(); String strNumber=""; for(int i=0;i<7;i++){ int number=new Random().nextInt(33)+1; if(number<10){ strNumber="0"+String.valueOf(number); }else{ strNumber=String.valueOf(number); } resArr.add(strNumber); } return resArr; }
注意在service中调用ondestroy
第三步在客户端获取Service
private ServiceConnection conn=new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) { binderService=((BinderService.MyBinder)service).getService(); } @Override public void onServiceDisconnected(ComponentName name) { } };
第四步在需要的地方调用服务端方法
public void onClick(View v) { List number=binderService.getRandomNumber(); for(int i=0;i<7;i++){ TextView textView=findViewById(tv[i]); textView.setText(number.get(i).toString()); }
第五步在onstart方法中绑定,和在onstop方法中解绑
Intent intent=new Intent(binderActivity.this,BinderService.class); bindService(intent,conn,BIND_AUTO_CREATE);
unbindService(conn);