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