使用我的广播接收器,无论何时连接蓝牙设备,我都会设置共享首选项(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());
}
我做错了什么,有更好的方法吗?
答案 0 :(得分:2)
尝试使用handler
,如下所示:
final Handler handler = new Handler();
Runnable myRunnable=new Runnable()
{
public void run()
{
//Start sevice here.
}
};
现在开始运行:
handler.postDelayed(myRunnable, 120000);
这将在2分钟后开始服务。