我的Android应用程序有一个意图服务,它运行但没有显示在服务列表中

时间:2013-01-12 15:53:13

标签: android android-intent intentservice

我的申请中有意向服务。当我的应用程序启动时,它成功运行了服务类,它运行良好(将数据从蓝牙存储在sqlite数据库中)。意图服务仅适用于我的应用程序,不会被其他应用程序使用。

但是,当应用程序长时间处于非活动状态时,服务有时会停止运行。我希望我的服务可靠地继续运行 - 这就是我创建服务的原因。我还希望服务在手机启动时自动启动(它不会启动)。

当我转到settings -> applications -> running services时,我的服务没有列在那里。

以下是我的清单文件的相关部分:

    <service android:enabled="true" android:name=".MyHxMService" android:exported="false">
        <intent-filter>
        <action
        android:name="org.xxxxx.MyHxMService" />
        </intent-filter>
    </service>
    <receiver android:name="MyStartupIntentReceiver">
        <intent-filter>
        <action
        android:name="android.intent.action.BOOT_COMPLETED" />
        <category android:name="android.intent.category.HOME" />
        </intent-filter>
    </receiver>
</application>

这是我的意向服务类声明:

public class MyHxMService extends IntentService {

这是我的 MyStartupIntentReceiver

package com.NewApp;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class MyStartupIntentReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
    Intent serviceIntent = new Intent();
    serviceIntent.setAction("org.xxxxx.MyHxMService");
    context.startService(serviceIntent);
}
}

2 个答案:

答案 0 :(得分:1)

开始MyHxMService服务
@Override
public void onReceive(Context context, Intent intent) {

    Intent serviceIntent = new Intent(context,org.xxxxx.MyHxMService.class);
    context.startService(serviceIntent);
}

答案 1 :(得分:0)

  1. 终止服务:IntentService的设计与AsyncTask类似,只要工作完成就会停止。如果您需要其他行为,请考虑扩展Service类本身。此外,从START_STICKYonStartCommand()返回Service告诉android保持活着,除非明确停止。

  2. 启动时启动:您已经设置了BOOT_COMPLETED IntentReciever,只需使用正确的Context和Component Class创建Intent,如其他答案所示。