1

我的应用程序中有一个意图服务。当我的应用程序启动时,它成功运行服务类并且运行良好(将从蓝牙获得的数据存储在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);
}
}
4

2 回答 2

1

启动 MyHxMService服务为

@Override
public void onReceive(Context context, Intent intent) {

    Intent serviceIntent = new Intent(context,org.xxxxx.MyHxMService.class);
    context.startService(serviceIntent);
}
于 2013-01-12T15:54:58.533 回答
0
  1. Termination of service :IntentService被设计成类似AsyncTask,一旦工作完成就停止。如果您需要其他行为,请考虑扩展Service类本身。此外,START_STICKY从 类onStartCommand()中返回Service告诉 android 保持活动状态,除非明确停止。

  2. 启动时启动:您已经设置了 BOOT_COMPLETED IntentReciever,只需使用适当的上下文和组件类创建 Intent,如其他答案所示。

于 2013-01-12T16:21:27.540 回答