学习Android开发4:Service

Service作为Android四大组件之一,在每一个应用程序中都扮演着非常重要的角色。它主要用于在后台处理一些耗时的逻辑,或者去执行某些需要长期运行的任务,不需要和用户进行交互。必要的时候我们甚至可以在程序退出的情况下,让Service在后台继续保持运行状态。

Android四大组件:Activity、Content Provider、BroadcastReceiver。

Service的种类:

  • Started:应用组件(如,Activity)调用 startService() 启动服务。这个service一旦启动,可以在后台无限期的运行,即使启动它的Activity已终止。
  • Bound:应用组件调用bindService() 绑定的服务。bound服务提供了 client-server 接口,组件通过它和服务交互(发送请求、得到结果)。使用它可以实现进程间通信(IPC)。

Service和Activity一样,也有生命周期,Service在不同状态会触发不同的回调函数。下图(左)是 Service 使用 startService() 启动后的生命周期;(右)是 Service 使用 bindService() 启动后的生命周期。

学习Android开发4:Service

要创建 Service,你需要创建一个继承 Service 的类。Service 基类定义的函数如下,在实际开发中你并不需要实现所有的回调函数。

  • onStartCommand():在另一个组件(如Activity)调用 startService() ,系统会调用这个函数。如果你实现了这个方法,当任务完成时你需要调用 stopSelf() 或 stopService()  终止服务。
  • onBind():其他组件调用 bindService(),系统会调用这个函数。如果你实现了这个方法,你必须实现一个客户端程序和服务沟通的方法(返回IBinder对象)。如果你不允许绑定,返回null。
  • onUnbind():当所有客户端程序都断开了到服务的连接时调用。
  • onRebind():当新客户端程序重新连接服务时调用。
  • onCreate():当服务第一次通过onStartCommand() 或 onBind()创建时调用。
  • onDestroy():当服务不再使用时调用,用来释放资源。

services生命周期简要代码:

简单示例

我们下面创建一个简单的 Android Service,大致步骤:

  1. 使用Android Studio创建新项目,参考Hello World
  2. 修改 MainActivity.java,添加startService() 和 stopService() 方法。
  3. 创建Java源码文件 MyService.java,实现Service相关方法
  4. 在 AndroidManifest.xml 文件中添加<service>标签,一个应用可以有一个或多个服务。
  5. 编辑 res/layout/activity_main.xml (res/values/strings.xml)添加两个按钮和几个标签
  6. 运行测试

创建MyService.java文件:

修改MainActivity.java

在AndroidManifest.xml中添加service标签:

activity_main.xml

strings.xml

运行:

学习Android开发4:Service

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注