layout_width="wrap_content"
android:
layout_height="wrap_content"android:
id="@+id/btnExit"
android:
text="退出程序">
packagecom.testService;
importandroid.app.Activity;
importandroid.app.Service;
importandroid.content.ComponentName;
importandroid.content.Intent;
importandroid.content.ServiceConnection;
importandroid.os.Bundle;
importandroid.os.IBinder;
importandroid.util.Log;
importandroid.view.View;
importandroid.widget.Button;
publicclasstestServiceextendsActivity{
ButtonbtnStartMyService,btnStopMyService,btnBindMyService,btnUnbindMyService,btnExit;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnStartMyService=(Button)this.findViewById(R.id.btnStartMyService);
btnStartMyService.setOnClickListener(newClickEvent());
btnStopMyService=(Button)this.findViewById(R.id.btnStopMyService);
btnStopMyService.setOnClickListener(newClickEvent());
btnBindMyService=(Button)this.findViewById(R.id.btnBindMyService);
btnBindMyService.setOnClickListener(newClickEvent());
btnUnbindMyService=(Button)this.findViewById(R.id.btnUnbindMyService);
btnUnbindMyService.setOnClickListener(newClickEvent());
btnExit=(Button)this.findViewById(R.id.btnExit);
btnExit.setOnClickListener(newClickEvent());
}
@Override
publicvoidonDestroy()
{
super.onDestroy();
Log.e("Activity","onDestroy");
}
privateServiceConnection_connection=newServiceConnection(){
@Override
publicvoidonServiceConnected(ComponentNamearg0,IBinderarg1){
//TODOAuto-generatedmethodstub
}
@Override
publicvoidonServiceDisconnected(ComponentNamename){
//TODOAuto-generatedmethodstub
}
};
classClickEventimplementsView.OnClickListener{
@Override
publicvoidonClick(Viewv){
Intentintent=newIntent(testService.this,MyService.class);
if(v==btnStartMyService){
testService.this.startService(intent);
}
elseif(v==btnStopMyService){
testService.this.stopService(intent);
}
elseif(v==btnBindMyService){
testService.this.bindService(intent,_connection,Service.BIND_AUTO_CREATE);
}
elseif(v==btnUnbindMyService){
if(MyService.ServiceState=="onBind")//Service绑定了之后才能解绑
testService.this.unbindService(_connection);
}
elseif(v==btnExit)
{
testService.this.finish();
}
}
}
}
packagecom.testService;
importandroid.app.Service;
importandroid.content.Intent;
importandroid.os.IBinder;
importandroid.util.Log;
publicclassMyServiceextendsService{
staticpublicStringServiceState="";
@Override
publicIBinderonBind(Intentarg0){
Log.e("Service","onBind");
ServiceState="onBind";
returnnull;
}
@Override
publicbooleanonUnbind(Intentintent){
super.onUnbind(intent);
Log.e("Service","onUnbind");
ServiceState="onUnbind";
returnfalse;
}
@Override
publicvoidonCreate(){
super.onCreate();
Log.e("Service","onCreate");
ServiceState="onCreate";
}
@Override
publicvoidonDestroy(){
super.onDestroy();
Log.e("Service","onDestroy");
ServiceState="onDestroy";
}
@Override
publicvoidonStart(Intentintent,intstartid){
super.onStart(intent,startid);
Log.e("Service","onStart");
ServiceState="onStart";
}
}
在Android里面可以使用SAX和DOM,DOM需要把整个XML文件读入内存再解析,比较消耗内存,而SAX基于事件驱动的处理方式,可以在各节点触发回调函数,不过SAX适合节点结构简单的XML文档,复杂的XML文档在后期的节点深度处理会有点麻烦(维信科技提供)。
xmlversion="1.0"encoding="utf-8"?
>
testSAX