0

からブロードキャストレシーバーにブロードキャストを送信することにより、実行中に ServiceA (を使用して開始AlarmManager)を停止できます。仕事が終わったら、同じ ServiceA をもう一度開始したいと思います。IntentServiceIntentServiceIntentService

Ex-私はService SrvA、IntentService IntSrvB、およびBroadcastReceiverを持っています。実行中は停止できます。私の問題は、仕事が終わったときに再び再起動する方法です。MyBcrIntSrvBSrvASrvAIntSrvB

注 -ServAを使用して開始されAlarmManagerます。

4

1 に答える 1

0

編集:コードに基づいて、変数myIntent&myIntent2IntentServiceクラスに渡すことができます。その後、それらを使用して、AlarmManager.

「NOW」を 1 回繰り返し、その後は間隔を置いて繰り返す各インテントにアラームを設定しているように見えることに注意してください。次に、暗黙的にサービスを再度開始します。つまり、サービスを 2 回「今すぐ」開始します。これは間違いのようです。AlarmManager.setRepeating()メソッドのドキュメントを参照してください。


以下の元の回答...

これをあなたの中に入れてくださいIntentService

@Override
protected void onHandleIntent(Intent intent)
{
    try
    {
        // STOP SERVICE

        // DO YOUR WORK HERE
    }
    finally
    {
        // START SERVICE
    }

}

サービスを停止するコードは既にあります。「サービスの開始」コードを取得して BroadcastReceiver、finally ブロックに入れることができます。

onDestroy()Android で一般的にオーバーライドすることはお勧めしません。

: これがアプリを設計する最善の方法だとは思いませんが、あなたの質問に答えています。個人的には、メインServiceにその機能を無効化および有効化できるメソッドがあり、サービスを開始および停止する代わりにそのメソッドを呼び出します。

于 2012-10-08T05:53:16.067 に答える