Activity绑定service
public class MainActivity extends Activity {
//销毁绑定
@Override
protected void onStop() {
super.onStop();
if(flag)
{
//解除绑定
unbindService(serviceConnection);
flag=false;
}
}
//绑定Service
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
/*Intent intent=new Intent(MainActivity.this,MyService.class);
//启动service
bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE);*/
}
private Button btnBinder=null;
private Button btnCall=null;
private TextView tv=null;
private MyService myService;
private boolean flag=false;//默认不绑定
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnBinder=(Button)this.findViewById(R.id.button1);
btnCall=(Button)this.findViewById(R.id.button2);
tv=(TextView)this.findViewById(R.id.textView1);
btnBinder.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(MainActivity.this,MyService.class);
//启动service
bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE);
}
});
//调用service方法
btnCall.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//处于绑定状态
if(flag)
{
int result=myService.getRandom();
tv.setText("<<<<<"+result);
}
}
});
}
private ServiceConnection serviceConnection= new ServiceConnection(){
//连接
@Override
public void onServiceConnected(ComponentName arg0, IBinder iBinder) {
//
LocalBinder binder=(LocalBinder) iBinder;
//获得服务
myService=binder.getService();
flag=true;
}
//不连接
@Override
public void onServiceDisconnected(ComponentName arg0) {
flag=false;
}
};
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
public class MyService extends Service {
private final LocalBinder lb=new LocalBinder();
private final Random num=new Random();
@Override
public IBinder onBind(Intent arg0) {
// 返回本地Binder
return lb;
}
//定义一个本地Binder类继承Binder
public class LocalBinder extends Binder{
//获得Servie子类当前实例给客户端
public MyService getService(){
return MyService.this;
}
}
public int getRandom(){
return num.nextInt(98);
}
}