package
com.zhf.local;
import
android.app.Activity;
import
android.content.ComponentName;
import
android.content.Context;
import
android.content.Intent;
import
android.content.ServiceConnection;
import
android.os.Bundle;
import
android.os.IBinder;
/**
* 此例的目的就是拿到MyService的引用,从而可以引用其内部的方法和变量
*
* @author Administrator
*
*/
public
class
LocalServiceActivity
extends
Activity {
/** Called when the activity is first created. */
private
MyService myService;
@Override
public
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent intent =
new
Intent(
this
, MyService.
class
);
bindService(intent, connection, Context.BIND_AUTO_CREATE);
}
private
ServiceConnection connection =
new
ServiceConnection() {
@Override
public
void
onServiceDisconnected(ComponentName name) {
myService =
null
;
}
@Override
public
void
onServiceConnected(ComponentName name, IBinder service) {
myService = ((MyService.MyBinder) service).getService();
System.out.println(
"Service连接成功"
);
myService.excute();
}
};
protected
void
onDestroy() {
super
.onDestroy();
unbindService(connection);
};
}
package
com.zhf.local;
import
android.app.Service;
import
android.content.Intent;
import
android.os.Binder;
import
android.os.IBinder;
public
class
MyService
extends
Service {
private
final
IBinder binder =
new
MyBinder();
@Override
public
IBinder onBind(Intent intent) {
return
binder;
}
public
class
MyBinder
extends
Binder {
MyService getService() {
return
MyService.
this
;
}
}
public
void
excute() {
System.out.println(
"通过Binder得到Service的引用来调用Service内部的方法"
);
}
@Override
public
void
onDestroy() {
super
.onDestroy();
}
@Override
public
boolean
onUnbind(Intent intent) {
System.out.println(
"调用者退出了"
);
return
super
.onUnbind(intent);
}
}