一、service
public class StudentService extends Service {
private String[] students = {"天线ddb","痕","license"};
private IBinder binder = new StudentBinder();
@Override
public IBinder onBind(Intent intent) {
return binder;
}
private String QueryStudentName(int studentNo){
if(studentNo>0 && studentNo<=students.length)
return students[studentNo-1];
return null;
}
private final class StudentBinder extends Binder implements IStudentBinder{
/* (non-Javadoc)
* @see com.example.studentservice.IStudentBinder#QueryName(int)
*/
@Override
public String QueryName(int studentNo){
return QueryStudentName(studentNo);
}
}
}
二、activity
public class MainActivity extends Activity {
private ServiceConnection conn = new StudentServiceConnection();
private IStudentBinder studentService;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent service = new Intent(this,StudentService.class);
bindService(service, conn, BIND_AUTO_CREATE);
}
@Override
protected void onDestroy() {
super.onDestroy();
unbindService(conn);
}
public void query(View v){
EditText studentNoText = (EditText)this.findViewById(R.id.studentNo);
int studentNo = Integer.valueOf(studentNoText.getText().toString());
String studentName = studentService.QueryName(studentNo);
TextView studentNameText = (TextView) this.findViewById(R.id.studentName);
studentNameText.setText(studentName);
}
//如果没有注册服务,就调用不了onServiceConnectioned 方法
private class StudentServiceConnection implements ServiceConnection{
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
studentService = (IStudentBinder)service;
}
@Override
public void onServiceDisconnected(ComponentName name) {
studentService=null;
}
}
}