在Android官方开发者指南中,Bound Service的章节中,有一个关于扩展Binder的本地绑定器的示例,代码如下:
public class LocalService extends Service {
// Binder given to clients
private final IBinder mBinder = new LocalBinder();
// Random number generator
private final Random mGenerator = new Random();
/**
* Class used for the client Binder. Because we know this service always
* runs in the same process as its clients, we don't need to deal with IPC.
*/
public class LocalBinder extends Binder {
LocalService getService() {
// Return this instance of LocalService so clients can call public methods
return LocalService.this;
}
}
@Override
public IBinder onBind(Intent intent) {
return mBinder;
}
/** method for clients */
public int getRandomNumber() {
return mGenerator.nextInt(100);
}
}
特别是这是客户端调用的方法:
/** method for clients */
public int getRandomNumber() {
return mGenerator.nextInt(100);
}
对于这样一个简单的动作我感到有点困惑,为什么我们需要把它投入服务?更重要的是,此服务只是一个本地服务,只能用于当前的应用程序,而不能用于其他应用程序。当然很明显,这种方法可以作为公共方法放入任何类中,对于上述情况就足够了。
我可以理解将文件下载代码放入服务(或者可能更适合IntentService)的目的,这适用于服务的功能:运行长时间处理代码。
但我无法理解的是为什么我们需要像这样的本地服务?
答案 0 :(得分:2)
需要本地绑定服务来处理客户端 - 服务器情况
假设你有一个案例,你需要多次做一些长时间的操作,并且还需要它的结果,并在你的Activity中做一些结果。
在这种情况下,您绑定服务并使用其方法,并且还可以使用回调来获取结果并在活动中执行操作。