我想实现一个Service
,就像Singleton
。
我需要我的应用来检查屏幕是否已锁定,然后启动Listener
IntentService
。如果屏幕解锁,它将终止Listener
服务。
我创建了一个ScreenLockService
IntentService
,如果用户选中了开/关框,则由Home
活动调用,因为我希望Listener
能够运行,即使应用程序未运行。
因此Home
活动会运行并停止ScreenLockService
服务,该服务将运行并停止Listener
服务。
我的问题是,Home
Activity
创建了ScreenLockService
的多个实例,这些实例还创建了Listener
的多个实例。
所以我希望将这两个IntentServices
运行为Singletons
,但我不知道该怎么做。
我已经检查了一堆教程,但是它们要么已过时,要么不适合IntentServices,例如: http://www.devahead.com/blog/2011/06/extending-the-android-application-class-and-dealing-with-singleton/ Singleton in Android
如果有必要,我可以发布我所拥有的一些示例代码,但我真正想要的只是一个操作方法。
答案 0 :(得分:2)
实现Singleton模式的基本思想是创建一个私有[或受保护]构造函数(这意味着它不能从类外部访问)。该类还需要一个自己类型的私有字段(例如mingw32-make.exe
;)接下来你需要的是名为private MyClass myObj
的公共静态方法,它通过newInstance()
返回类的实例如果它不为null,则实例化它:
myObj
当然它可以有更复杂的实现(构造函数不必没有参数)。
现在,这将始终只创建所需类的一个实例。您需要做的就是始终在需要使用班级的地方调用方法public static MyClass newInstance(){
if (myObj == null) {
myObj = new MyClass();
}
return myObj;
}
。如果它已经实例化,它将为您提供旧实例,如果没有,它将创建它。
希望这是您正在寻找的解释。