我在按钮上设置了代码,设置警报管理器发送广播并激活设备上的 WiFi。我已将延迟设置为 1 分钟,但代码却在我单击按钮后立即响起了警报
这是按钮上的代码:
public void start(View view){
AlarmManager alarm = (AlarmManager) getSystemService(ALARM_SERVICE);
Intent intent1 = new Intent(this,MyReceiver.class);
PendingIntent TurnWiFi = PendingIntent.getBroadcast(getApplicationContext(), 0, intent1, 0);
long milli = 60000;
alarm.set(AlarmManager.RTC,milli,TurnWiFi);
}
Receiver中的代码:
public class MyReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Log.i("BroadcastReceiver","------------>In on receive method<-------------");
WifiManager wifi_man = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
wifi_man.setWifiEnabled(true);
}
最佳答案
在 alarm.set(AlarmManager.RTC,milli,TurnWiFi);毫已经过去了
使用日历可降低复杂性。
这应该可以解决您的问题:
alarm.set(AlarmManager.RTC,System.currentTimeMillis() + milli,TurnWiFi);
更新:
解释:
If the stated trigger time is in the past, the alarm will be triggered immediately
AlarmManager.RTC(实时时钟)类型的触发器是以毫秒表示的一天中的时间。而 60000 毫秒实际上已经过去了。
根据文档,System.currentTimeMillis() + 60000 在接下来的 60 秒内关闭
System.currentTimeMillis()
Returns the current time in milliseconds since January 1, 1970 00:00:00.0 UTC.
关于android - 单击按钮时警报管理器关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29321666/