在我的Android应用程序中,我重载了Application类,并更新了清单中的标记.此应用程序还会创建Android服务.我已经在我的Application类的onCreate中放了一些日志,我看到它被调用了两次.第一次是我的应用程序启动时(这是预期的)然后,它通常是在创建服务之后.日志还显示正在创建Application的第二个实例.(我打印"this"值,它们是不同的).
我认为应用程序将创建为单例.这是因为我创建了一个服务吗?
hac*_*bod 29
是的,如果您使用了android:process,那么您可以在单独的进程中运行它,因此当服务启动时,会为它启动一个新进程,因此需要创建该进程的新Application对象.
但是存在一个更基本的问题 - Application对象启动其中一个服务是不对的.重要的是,不要将应用程序与您在另一个操作系统中考虑"应用程序"的方式混淆.Application对象不会驱动应用程序.它只是该流程中应用程序的全局状态.实际上,Application对象完全是多余的 - 您永远不需要编写Android应用程序.一般来说,我实际上建议人们不要使用它.它比其他任何事情都更容易造成麻烦.
另一种说法是:真正定义应用程序的是它的活动,服务,接收器和提供者标签的集合.那些是"推出".所有应用程序都是在初始化应用程序进程时创建的.它没有自己的生命周期,只是在那里为应用程序中的其他真实组件提供服务.
所以在设计应用时只需忽略应用; 它会减少混乱.(取而代之的是,我更喜欢将全球单身人士用于这种状态.)
另外作为一般规则,我建议不要使用android:process.当然也有一些用途,但不需要绝大多数时间它,只是让一个应用程序中使用更多的内存,效率较低,难写(因为你不能在一个单一的过程中优势的全局变量) .过程:如果你到达一个地方,居然有一个很好的理由使用Android很明显你.
问题是服务也是一个组件,有自己的生命周期,只是它没有用户界面。您应该检查开发人员应用程序基础知识以获取替代方案。
归档时间: |
|
查看次数: |
8227 次 |
最近记录: |