我有4个服务A B C和D我使A运行在一个循环中,当它初始化的时候,我在A服务中设置了警报管理器的意图,每隔几分钟就启动B C和D服务。所以A一直在跑,B,C和D每隔几分钟醒来完成任务,然后进入睡眠状态。现在我想让A也被闹钟管理员唤醒。Android服务生命周期
我该怎么办?
预先感谢您。
我有4个服务A B C和D我使A运行在一个循环中,当它初始化的时候,我在A服务中设置了警报管理器的意图,每隔几分钟就启动B C和D服务。所以A一直在跑,B,C和D每隔几分钟醒来完成任务,然后进入睡眠状态。现在我想让A也被闹钟管理员唤醒。Android服务生命周期
我该怎么办?
预先感谢您。
使每隔几分钟运行一个TimerTask就成为一项粘性服务。
@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
public void run()
{
// start B, C, D
}
}, 20000, 60000); // every 60 seconds
return START_STICKY;
}
设置BroadcastReceiver
以从OS获取警报事件。然后,在AlarmManager
的期望周期内注册一个警报。当您的接收器从操作系统收到警报时,您可以关闭四个Service
的意图。
在你的发射器Activity
的onCreate()
方法中设置BroadcastReceiver
,你应该很好走!
你能帮我理解它是如何工作的吗?我可以在其他地方使用定时器,而不是onStartCommand。这是我当前的代码A.从onStart命令转到onHandleIntent并从那里启动其他服务。我如何在这里使用它? @Override public int onStartCommand(Intent intent,int flags,int startId){ \t super.onCreate(); \t super.onStartCommand(intent,flags,startId); \t return START_STICKY; } – user973743