13.1.1. 使用系统服务的一般步骤

优质
小牛编辑
131浏览
2023-12-01

13.1.1.使用系统服务的一般步骤

使用系统服务,就调用getSystemService()。它返回一个表示系统服务的Manager对象,随后凭它就可以访问系统服务了。系统服务大多都是发布/订阅的接口,使用起来大约就是准备一个回调方法,将你的程序注册到相应的系统服务,然后等它的通知。而在Java中的通行做法是,实现一个内含回调方法的侦听器(Listener),并把它传递给系统服务。

有一点需要注意,那就是访问系统服务可能会比较费电。比如访问GPS数据或者传感器操作,都会额外消耗设备的电能。为了节约电能,我们可以仅在界面激活时进行传感器操作,使不必要的操作减到最少。用Activity生命周期(参见"Activity生命周期"一节)的说法就是,我们仅在Running状态中响应这些操作。

进入Running状态之前必经onResume(),离开Running状态之后必经onPause()。因此要保证只在Running状态中使用系统服务,就在onResume()中注册到系统服务,并在onPause()中注销即可。在某些情景中,我们可能希望将Activity注册在onStart()与onStop()之间,甚至onCreate()与onDestroy()之间,好让它在整个生命周期里都在注册中。但在这里,我们并不希望在onCreate()中就开始使用系统服务,因为onCreate()时,Activity还未显示,在此注册到系统服务只会空耗电能。由此可以看出,对Activity的生命周期有所理解,对省电是肯定有帮助的。