在我的Android应用程序中,如何在应用程序启动时运行特定功能?如果可能,我不想将其与特定活动联系起来。将它绑定到特定活动的onCreate方法将不起作用,因为即使屏幕方向发生更改,onCreate也会被调用。
答案 0 :(得分:3)
对于每次启动应用程序时只运行一次的函数,您有几个选项。
- 您可以使用要运行的函数创建Singleton,并使函数调用以单例内的静态布尔标志为条件。由于静态单例是来自任何给定Activity的外部,因此当您旋转屏幕并创建/销毁单个活动时,该标志不会还原。虽然这个解决方案比Application子类更受欢迎,但你确实需要确保函数调用“mySingleton.runOnce(params ...)”在每个Activity中,它构成了Activity的入口点(所以你可以从任何地方调用外部应用程序)
- 您可以继承Application类并覆盖其onCreate方法。这不是首选解决方案:从文档中
通常不需要子类Application。在大多数情况下,静态单例可以以更模块化的方式提供相同的功能。如果你的单例需要一个全局上下文(例如注册广播接收器),那么检索它的函数可以给一个Context,它在第一次构造单例时在内部使用Context.getApplicationContext()。
希望这有帮助!