现在的位置: 首页 > 综合 > 正文

Activity绑定service

2017年11月18日 ⁄ 综合 ⁄ 共 2156字 ⁄ 字号 评论关闭

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 serviceConnectionnew 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);

}

 

}

抱歉!评论已关闭.