1

アプリケーションにインテントサービスがあります。アプリケーションが起動すると、サービスクラスが正常に実行され、正常に機能します(Bluetoothから取得したデータを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. サービスの終了 : のIntentServiceように設計されてAsyncTaskおり、作業が完了するとすぐに停止します。他の動作が必要な場合は、Serviceクラス自体を拡張することを検討してください。また、クラスSTART_STICKYから 戻ると、明示的に停止しない限り、Android を存続させるように指示されます。onStartCommand()Service

  2. 起動時の起動: 既に BOOT_COMPLETED IntentReciever をセットアップしています。他の回答に示されているように、適切なコンテキストとコンポーネント クラスを使用してインテントを作成するだけです。

于 2013-01-12T16:21:27.540 に答える