我们在通信的时候需要绑定服务器端,如何链接服务端呢,看例子:
我们在MainActivity中添加如下代码:
public class MainActivity extends Activity implements OnClickListener, ServiceConnection{//实现OnClickListener, ServiceConnection接口
private Button m_startBtn;
private Button m_stopBtn;
private Button m_bindBtn;
private Button m_unBindBtn;
private Intent m_serverIntent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
m_serverIntent = new Intent(this, EchoServer.class); // 启动server
m_startBtn = (Button) findViewById(R.id.start);
m_stopBtn = (Button) findViewById(R.id.stop);
m_bindBtn = (Button) findViewById(R.id.bindServer);
m_unBindBtn = (Button) findViewById(R.id.unbindServer);
m_startBtn.setOnClickListener(this);
m_stopBtn.setOnClickListener(this);
m_bindBtn.setOnClickListener(this);
m_unBindBtn.setOnClickListener(this);
}
@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;
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()) {
case R.id.start:
startService(m_serverIntent);
break;
case R.id.stop:
stopService(m_serverIntent);
break;
case R.id.bindServer:
System.out.print("R.id.bindServer");
bindService(m_serverIntent, this, Context. BIND_AUTO_CREATE);
break;
case R.id.unbindServer:
unbindService(this);
break;
default:
break;
}
}
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
System.out.print("onServiceConnected" + "\n"); // the metho is called that connects the server
}
@Override
public void onServiceDisconnected(ComponentName name) {
System.out.print("onServiceDisconnected" + "\n"); // the metho is called that disconnects the server
}
}
服务端:
public class EchoServer extends Service {
@Override
public IBinder onBind(Intent arg0) {
java.lang.System.out.print("bind server1" + "\n");
java.lang.System.out.print("bind server2" + "\n");
return echoBinder;
}
private EchoServerBinder echoBinder = new EchoServerBinder();
public class EchoServerBinder extends Binder { //必须要实现一个Binder座位onBind的返回值
}
@Override
public void onCreate() {
java.lang.System.out.print("onCreate" + "\n");
super.onCreate();
}
@Override
public void onDestroy() {
java.lang.System.out.print("onDestroy" + "\n");
super.onDestroy();
}
}