使用处理程序从另一个服务中启动服务

时间:2012-08-16 02:14:13

标签: android timer handler

使用我的广播接收器,无论何时连接蓝牙设备,我都会设置共享首选项(BT_Device_connected)。

现在,我正在写的应用程序会在您插入手机时自动打开蓝牙(是的,我知道不推荐。专注!;)。

我要做的是等待电话插入后2分钟,然后检查手机是否连接到蓝牙设备的那两分钟(如果BT_device_connected为真,它有,如果是,它没有)。

所以,我试图从一个服务中启动一个计时器/处理程序,等待2分钟,然后启动一个新服务,或者一个检查设备是否已连接的方法。

和...我必须在背景中做所有这些,因为这些都不会影响ui。

我所拥有的光荣代码,如果不起作用,如下:

public void onDeviceConnectTimer(){

TimerTask wait;
final Handler handler = new Handler();
Timer t = new Timer();
wait = new TimerTask() {
        public void run() {
                handler.post(new Runnable() {
                        public void run() {
                            Intent serviceIntent = new Intent(CheckIfDeviceConnectService.class.getName());
                            getApplicationContext().startService(serviceIntent);
                         Log.d("TIMER", "Timer set off");
                        }
               });
        }};
    t.schedule(wait, initializeDate()); 
 }

我做错了什么,有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

尝试使用handler,如下所示:

final Handler handler = new Handler();
Runnable myRunnable=new Runnable()
{
public void run()
  { 
    //Start sevice here.

  }
};

现在开始运行:

handler.postDelayed(myRunnable, 120000);

这将在2分钟后开始服务。