0

私は Service を作成しようとしていますが、1 分後に目を覚まし、自分自身を再度呼び出します (この例では、バッテリーに悪いことがわかっています)。

コードの一部を次に示します。

public class SpeechService extends Service {
    @Override
    public void onCreate() {
        super.onCreate();

        setUpNextAlarm();
    }

    public void setUpNextAlarm(){
        Intent intent = new Intent(SpeechService.this, this.getClass());
        PendingIntent pendingIntent = PendingIntent.getService(this, 0, intent, 0);

        long currentTimeMillis = System.currentTimeMillis();
        long nextUpdateTimeMillis = currentTimeMillis + 1 * DateUtils.MINUTE_IN_MILLIS;

        // Schedule the alarm!
        AlarmManager am = (AlarmManager)ContextManager.getApplicationContext().getSystemService(Context.ALARM_SERVICE);
        am.set(AlarmManager.RTC_WAKEUP,nextUpdateTimeMillis, pendingIntent);
        Log.e("test","I am back!");
    }

    protected void onHandleIntent(Intent intent)
    {
        Log.e("test","I am back!");
        setUpNextAlarm();
    }
}

ご覧のとおり、サービスの作成時に setUpNextAlarm を呼び出しています。最後にログが表示されますが、サービスが再度呼び出されることはありません。私はこれをIndentServiceで試しましたが、動作しますが、通常のサービスで動作する必要があります:(。

ありがとうございました

4

2 に答える 2

1

使用する

 PendingIntent.getService

いいえ

 PendingIntent.getBroadcast

ブロードキャスト インテントを取得しています。

于 2012-08-26T18:59:39.503 に答える
0

Service と IntentService を使用することになりました。IntentService は AlarmManager を使用していて、サービスを呼び出していました。

于 2012-09-01T01:50:56.923 に答える