嗯,我想每隔6小时左右检查一次网站的版本(这部分我知道怎么做)。
因此,我正在考虑为此制作一个service,并为此使用AlarmManager。
因为我需要互联网来检查网站的版本,所以我需要一些东西来看看互联网是否开着,或者什么时候打开。过了一段时间我会
所以我的问题(是的,不只是一个!)包括:
即使显示器进入休眠状态,
AlarmManager吗?当设备醒来时,它知道经过了多少次,如果超过6h就执行任务?broadcast?)发布于 2011-12-23 17:18:42
报警管理器:
警报管理器与显示状态没有任何关系,所以即使屏幕关闭,Yes也可以工作。
网络可用性片段:
public boolean isNetworkAvailable() {
Context context = getApplicationContext();
ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity == null) {
boitealerte(this.getString(R.string.alert),"getSystemService rend null");
} else {
NetworkInfo[] info = connectivity.getAllNetworkInfo();
if (info != null) {
for (int i = 0; i < info.length; i++) {
if (info[i].getState() == NetworkInfo.State.CONNECTED) {
return true;
}
}
}
}
return false;
}如果网络可用,此函数将返回true,如果不是,则返回false (飞机模式,无法到达,等等)。
别忘了在你的舱单上添加许可
--可能的解决方案
为屏幕关闭广播接收器&在下面这样的事件上设置屏幕,
public class ScreenReceiver extends BroadcastReceiver {
public static boolean wasScreenOn = true;
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
// do whatever you need to do here
wasScreenOn = false;
} else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
// and do whatever you need to do here
wasScreenOn = true;
}
}
}在这个接收器中,给出了请求网络是否可用的逻辑。
发布于 2011-12-23 18:58:00
关于报警器的事。下面是一个可能的代码:
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC, System.currentTimeMillis() + 10000, 6*60*60*1000, pendingIntent);第一个参数影响设备的行为:
RTC -报警器不会唤醒设备;如果它在设备休眠时启动,则直到下一次设备醒来时才会发出警报。
RTC_WAKEUP -当设备爆炸时唤醒它
https://stackoverflow.com/questions/8618758
复制相似问题