如何在不使用PendingIntent的情况下在服务中使用AlarmManager?

时间:2013-12-07 07:16:50

标签: android service alarmmanager

对不起,我有一个问题。

我想创建一个服务,一旦设备启动并运行,就可以通过扩展BroadcastReceiver来启动。在服务类中,我想启动一个警报管理器,在一定时间后显示通知。然后,一旦时间过去,将显示通知,则应在下一个指定时间重新安排警报管理器。如何实现这一点,因为警报管理器设置功能需要待处理的意图,因为我在服务类中不需要挂起的意图。我坚持使用警报管理器而不是Timer,因为以下链接建议使用它:Which is better for a background service WakeLock or startForeground

代码:

public class BootCompletedReceiver extends BroadcastReceiver {

    final static String TAG = "BootCompletedReceiver";

    @Override
    public void onReceive(Context context, Intent arg1) {
        Log.w(TAG, "starting service...");
        context.startService(new Intent(context, BookkeeperService.class));
    }
}

import android.app.AlarmManager;
import android.app.Notification;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.os.PowerManager;

public class BookkeeperService extends Service {
    AlarmManager alarmManager;

    @Override
    public void onCreate(){
        super.onCreate();

        alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
        // here I need to set the alarm to notify the user after certain time and then reschedule 
        // to the next event
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        super.onStartCommand(intent, flags, startId);

        return START_NOT_STICKY;
    }

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
}

谢谢

1 个答案:

答案 0 :(得分:0)

如果您想通过闹钟向广播接收器传递消息,只需让闹钟在您闲暇时发送消息,然后开始注册以获得更多警报。您可以从服务中启动警报,并从那里自动维护警报。