2

我有一个 IntentService,我想从 onCreate 开始。打电话给网站然后(可能)通过下载管理器开始下载,这是一场火灾,忘记了。我不相信我的服务正在启动,因为我没有看到任何日志语句。我的清单中有服务,与 main 相同的包。它也没有出现在我的 logcat 中(另一个线程说应该)。

创建:

public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

    Intent heartbeat = new Intent(this, Heartbeat.class);
    startService(heartbeat);
}

*我也试过 this.startService(heartbeat); 它也没有工作。

显现:

<application
    android:debuggable="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >

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

    <activity
        android:name=".MainActivity"
        android:configChanges="keyboardHidden|orientation|screenSize"
        android:label="@string/title_activity_main" >

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

*带或不带 android:enabled 标志没有区别

IntentService 的开始:

public class Heartbeat extends IntentService
{
    public Heartbeat()
    {
        super("Heartbeat");
        Log.v("SUPER", "SUPER");
    }

    @Override
    protected void onHandleIntent(Intent intent)
    {
        Log.v("HERE", "HERE");
        //do other stuff

这些日志语句都没有出现在控制台/logcat 中,并且我的服务从未访问过 Web 服务器(此代码以前在 asynctask 中并且正在运行)。关于我做错了什么的任何想法?

编辑 - 我确实在我的所有消息中看到来自标签 ActivityManager 的警告,指出“无法启动服务 Intent { act=com.example.vs_1.Heartbeat }:未找到”。但是,我在该消息中看到的几乎所有建议都是将清单放入应用程序标记中,我已经这样做了。

4

2 回答 2

3

啊,剧情变厚了!

“无法启动服务”是一个错误,即使它被标记为警告。

发生这种情况是因为系统找不到具有所列名称的类。在这种情况下,它是 com.example.vs_1.Heartbeat。

为确保您拥有该类,您需要一个文件 Hearbeat.java,其中包含

包 com.example.vs_1;

公共类 Heartbeat 扩展 IntentService...

在您的清单中,如果您的元素包含属性 package="com.example.vs_1",那么您可以说

请注意“心跳”之前的句点(“.”)。

如果您使用“包”的另一个值,那么您必须说

/com.example.vs_1.Heartbeat" 其中是 "package" 的值。

应该清楚的是,您应该为您的类选择一个主包名称,并为“包”值使用相同的名称。

于 2012-11-01T21:33:10.240 回答
0

您确定主要活动正在正确启动吗?如果系统无法启动您的 IntentService,LogCat 会向您显示错误消息。此外,这些是“详细”消息,因此请确保将 LogCat 设置为显示它们。如果您将 LogCat 设置为“错误”,它将不会显示详细消息。

于 2012-11-01T20:04:04.893 回答