首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何每6h执行一次任务,或者何时为Android提供网络?

如何每6h执行一次任务,或者何时为Android提供网络?
EN

Stack Overflow用户
提问于 2011-12-23 17:08:03
回答 2查看 233关注 0票数 0

嗯,我想每隔6小时左右检查一次网站的版本(这部分我知道怎么做)。

因此,我正在考虑为此制作一个service,并为此使用AlarmManager

因为我需要互联网来检查网站的版本,所以我需要一些东西来看看互联网是否开着,或者什么时候打开。过了一段时间我会

所以我的问题(是的,不只是一个!)包括:

即使显示器进入休眠状态,

  1. 也能工作AlarmManager吗?当设备醒来时,它知道经过了多少次,如果超过6h就执行任务?
  2. 如何检查什么时候有互联网可用?
  3. 如何知道什么时候打开互联网?(某种broadcast?)
  4. Is --这是一个很好的解决方案?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-23 17:18:42

报警管理器:

警报管理器与显示状态没有任何关系,所以即使屏幕关闭,Yes也可以工作。

网络可用性片段:

代码语言:javascript
复制
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 (飞机模式,无法到达,等等)。

别忘了在你的舱单上添加许可

--可能的解决方案

为屏幕关闭广播接收器&在下面这样的事件上设置屏幕,

代码语言:javascript
复制
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;
        }
    }
}

在这个接收器中,给出了请求网络是否可用的逻辑。

票数 3
EN

Stack Overflow用户

发布于 2011-12-23 18:58:00

关于报警器的事。下面是一个可能的代码:

代码语言:javascript
复制
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC, System.currentTimeMillis() + 10000, 6*60*60*1000, pendingIntent);

第一个参数影响设备的行为:

RTC -报警器不会唤醒设备;如果它在设备休眠时启动,则直到下一次设备醒来时才会发出警报。

RTC_WAKEUP -当设备爆炸时唤醒它

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8618758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档