请解释一下 Android 服务(Service)。它与活动(Activity)有何不同?它是否依赖于应用程序状态,例如运行在前台/后台?
一个服务是一个应用程序组件,代表一个应用程序希望执行长时间运行操作而不与用户交互或为其他应用程序提供功能。
非常重要的一点是
就像其他应用对象一样,服务在它们的主机进程的主线程中运行。这意味着,如果您的服务将执行任何CPU密集型操作(例如MP3播放)或阻塞操作(例如网络),它都应该在自己的线程中产生工作。
这与活动形成对比,最好理解为用户直接看到并与之交互的内容(即UI)。
如上所述,服务可以用于长时间运行的操作,即使您没有前台活动,但如果处于“后台”状态,它们也可能或者终将被Android的生命周期杀死。如果需要您的服务作为单个实例继续运行而不被杀死并重新启动,则建议在服务的onCreate
方法中放置startForeground(int id, Notification notification)和在服务的onDestroy
方法中放置stopForeground(boolean removeNotification)。
例如,我有一个应用程序,使用前台服务
在android设备靠近用户身体时记录加速度计数据。虽然它不需要激活,但我还有一个Activity
广播一个Intent
到Service
内部的BroadcastReceiver
,告诉Service
应该也通过附加加速度计数据的Intent
广播到Activity
内部的BroadcastReceiver
。
代码:
SleepActivity是一个与睡眠监测有关的应用程序,SleepAccelerometerService是其伴随的一项服务。祝好运,如果需要更多信息,请告诉我!