0

我正在尝试创建一个服务,一分钟后唤醒并再次调用自己(在这个例子中,我知道它对电池不好)。

以下是部分代码:

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

我刚刚使用了一个服务和一个 IntentService。IntentService 正在使用 AlarmManager,然后它正在调用服务。

于 2012-09-01T01:50:56.923 回答