服务无法解析为某种类型

时间:2012-03-05 23:42:07

标签: android

这让我感到疯狂,因为答案可能正在盯着我。我正在尝试使用http://marakana.com/forums/android/examples/60.html中的示例学习在Android中制作简单的服务 但是我尝试开始服务的地方

        startService(new Intent(this, MyService.class));

我在构建时“得到”MyService无法解析为类型。

该示例在活动结束后和应用程序结束前的Manifest中有此行。 。 。

<service android:enabled="true" android:name=".MyService" />

...但我也尝试过没有“。”并使用完全限定的包名称,即test.bg.MyService,没有任何改进。

知道为什么它无法解决它?

2 个答案:

答案 0 :(得分:1)

如果在编译期间遇到“MyService无法解析为某个类型”,或者Eclipse中出现错误,那么项目中就没有这样的类。

它与您的清单无关 - 由此产生的问题直到运行时才会显示当前的开发人员工具。

答案 1 :(得分:1)

我建议您阅读Intents and Intent Filters上的文档,尤其是有关明确隐式意图的部分。

您要做的是使用 Explicit Intent使用类名来启动服务,该类名在尝试启动它的项目中不存在(如CommonsWare指出的那样) )。

至于你的信念......

  

服务是作为单独的项目构建的

......这可能是可能的,但通常情况并非如此,甚至您对CommonsWare的评论中的链接实际上也证明了Local Service的使用并引用了该段的开头段落节...

  

服务最常见的用途之一是作为辅助组件与应用程序的其他部分一起运行,与其他组件在同一进程中运行。除非另有明确说明,否则.apk的所有组件都在同一进程中运行,因此这是典型情况。

所以基本上说,一般情况是您的服务将是包含其他组件的应用程序的一个组件,这些组件将使用该服务。

当然,您可以在另一个应用程序中使用服务,但是您需要在清单中使用<intent-filter>条目和test.bg.ACTION_DO_SOMETHING之类的操作进行注册,然后让外部应用程序使用隐含意图。

使用您在问题中链接的示例代码无法正常工作。