android - 通过 Intent 启动 Android 服务与通过实例创建

标签 android android-service

据我了解,Android 服务应该是单例的——一次最多运行一个类实例。所以你应该通过 Intent 启动它们,而不是

MyService mse = new MyService();

但是,在 Google 的应用内结算示例中,这正是他们在 Dungeons.java 第 235 行中所做的。因此这显然是合法的。

我想知道,如果我启动这样的服务,框架稍后会识别它正在运行吗?换句话说,如果我稍后尝试在同一个服务上调用 startService(),框架会识别出该服务的一个实例已经存在并向它分派(dispatch) startService() 调用吗?

最佳答案

我不知道你指的是什么例子。但是您绝对不能自己使用 Activity 实例化 Android 组件( BroadcastReceiverServiceProvidernew )关键词。这些组件只能由 Android 框架实例化,因为框架需要设置 Context组件的。

(不幸的是)没有什么能阻止你写 Service s = new MyService(); ,但这对你没有好处。 Android 永远不会在此 Service 上调用任何生命周期方法以及您对 Service 的方法所做的任何调用可能会失败,因为实例没有 Context .

关于android - 通过 Intent 启动 Android 服务与通过实例创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9021664/

相关文章:

android - GCM android 客户端不接收消息

android DrawerLayout导航 fragment 重新加载而无需点击DrawerLayout项目

Android 库 list 与应用 list

android - 使用 AlarmManager 每 20 秒运行一次 Android 服务不会在从应用程序列表中终止该应用程序时重新启动

android - 在 ADB 上为 Android 运行指定时间的音频捕获

android - 如何测试我们是否在 Gradle 中进行发布构建

java - 1 项家长服务和 2 项 child 服务

android - 使用相机拍照的后台服务

android - 当应用程序关闭时,Kivy 服务停止

java - 如何获取最准确的用户位置