Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TimerTask Android蓝牙_Android_Service_Timer_Schedule_Timertask - Fatal编程技术网

TimerTask Android蓝牙

TimerTask Android蓝牙,android,service,timer,schedule,timertask,Android,Service,Timer,Schedule,Timertask,我正在实施一项服务,该服务在Android启动时启动,预计每10分钟扫描一次附近的蓝牙设备。当它发现设备时,它会做一些工作。此外,此定期扫描应在设备开启的整个时间内进行。我正试图安排一个TimerTask,但我不知道如何使用它。我想它应该启动这个服务,让服务来完成工作,而不是在TimerTask的run方法中编写代码?我如何从TimerTask启动服务,因为这似乎是解决我问题的最简单方法,但TimerTask是java.util的一部分,而不是Android类的一部分 我刚找到安卓的AlarmM

我正在实施一项服务,该服务在Android启动时启动,预计每10分钟扫描一次附近的蓝牙设备。当它发现设备时,它会做一些工作。此外,此定期扫描应在设备开启的整个时间内进行。我正试图安排一个TimerTask,但我不知道如何使用它。我想它应该启动这个服务,让服务来完成工作,而不是在TimerTask的run方法中编写代码?我如何从TimerTask启动服务,因为这似乎是解决我问题的最简单方法,但TimerTask是java.util的一部分,而不是Android类的一部分

我刚找到安卓的AlarmManager。我应该用这个吗?它能启动服务吗


到目前为止,我有这个,但我需要帮助:

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.