Android使用本地服务的目的是什么

时间:2016-03-04 02:52:49

标签: android service

在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)的目的,这适用于服务的功能:运行长时间处理代码。

但我无法理解的是为什么我们需要像这样的本地服务?

1 个答案:

答案 0 :(得分:2)

需要本地绑定服务来处理客户端 - 服务器情况

假设你有一个案例,你需要多次做一些长时间的操作,并且还需要它的结果,并在你的Activity中做一些结果。

在这种情况下,您绑定服务并使用其方法,并且还可以使用回调来获取结果并在活动中执行操作。

相关问题