TimerTask Android蓝牙
我正在实施一项服务,该服务在Android启动时启动,预计每10分钟扫描一次附近的蓝牙设备。当它发现设备时,它会做一些工作。此外,此定期扫描应在设备开启的整个时间内进行。我正试图安排一个TimerTask,但我不知道如何使用它。我想它应该启动这个服务,让服务来完成工作,而不是在TimerTask的run方法中编写代码?我如何从TimerTask启动服务,因为这似乎是解决我问题的最简单方法,但TimerTask是java.util的一部分,而不是Android类的一部分 我刚找到安卓的AlarmManager。我应该用这个吗?它能启动服务吗TimerTask Android蓝牙,android,service,timer,schedule,timertask,Android,Service,Timer,Schedule,Timertask,我正在实施一项服务,该服务在Android启动时启动,预计每10分钟扫描一次附近的蓝牙设备。当它发现设备时,它会做一些工作。此外,此定期扫描应在设备开启的整个时间内进行。我正试图安排一个TimerTask,但我不知道如何使用它。我想它应该启动这个服务,让服务来完成工作,而不是在TimerTask的run方法中编写代码?我如何从TimerTask启动服务,因为这似乎是解决我问题的最简单方法,但TimerTask是java.util的一部分,而不是Android类的一部分 我刚找到安卓的AlarmM
到目前为止,我有这个,但我需要帮助: myHandler.postDelayed(r,10分钟); } } r、 run(); }
onDestroy()
{
super.ondestory();
myHandler.removeCallback(r);
}
}
类MyService扩展服务
{
}
对不起,我不明白这里的格式是如何工作的
我需要在服务中重写onDestroy()吗?在哪里使用stopService()?您需要:
onStart
/onStartCommand
的服务中,您需要使用Handler
或AlaramManager
定期更新Handler
和AlarmManager
之间的区别在于:Handler
在设备处于深度睡眠状态时不会运行,而您可以配置AlarmManager
来唤醒设备并运行代码
我建议使用处理程序
,因为它更简单,而且您说您只需要在设备处于唤醒状态时运行代码
还有一件事,Handler
不使用额外的线程,而TimerTask
使用额外的线程。这在Android上被认为是一种糟糕的做法,只为定时器浪费线程
如何使用
处理程序重复任务的示例代码可以在这里找到:。我不知道处理程序可以管理我的计时。我得再调查一下。我只认为它将消息从一个类发送到另一个类。好的,我将使用Handler和Runnable。因此,我在Runnable中实现run()方法,然后可以调用startActivity()?或者如何启动服务?
class Timer extends Service
{
private Handler myHander;
Runnable r = new Runnable()
{
run()
{
startService(new Intent(Timer.this.getApplicationContext() ,MyService.class));
onCreate()
{
myHandler=new MyHandler();
}
onStartCommand()
{
//Do the bluetooth work.