如何每6小时执行一次任务,或者当网络可用于Android时执行一次任务?

如何每6小时执行一次任务,或者当网络可用于Android时执行一次任务?,android,service,android-activity,Android,Service,Android Activity,嗯,我想每隔6小时左右检查一个站点的版本(这部分我知道怎么做) 因此,我正在考虑为此提供服务,并使用AlarmManager 因为我需要互联网来检查网站的版本,所以我需要一些东西来查看互联网是否打开或何时打开。过了一段时间,我会 所以我的问题(是的,不仅仅是一个!)是: 即使显示器进入休眠状态,AlarmManager是否仍能工作?当设备唤醒时,它知道经过了多少时间,如果超过6小时,它会执行任务 如何检查互联网何时可用 如何知道互联网何时开启?(某种形式的广播?) 这是一个好的解决方案吗 报警

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

因此,我正在考虑为此提供
服务
,并使用
AlarmManager

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


所以我的问题(是的,不仅仅是一个!)是:

  • 即使显示器进入休眠状态,
    AlarmManager
    是否仍能工作?当设备唤醒时,它知道经过了多少时间,如果超过6小时,它会执行任务
  • 如何检查互联网何时可用
  • 如何知道互联网何时开启?(某种形式的
    广播
    ?)
  • 这是一个好的解决方案吗

  • 报警管理器:

    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;
    }
    
    报警管理器与显示状态无关,因此即使屏幕关闭,它也可以工作

    网络可用性片段:

    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;
    }
    

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

    报警管理器:

    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;
    }
    
    报警管理器与显示状态无关,因此即使屏幕关闭,它也可以工作

    网络可用性片段:

    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;
    }
    

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

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

    AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
    alarmManager.setRepeating(AlarmManager.RTC, System.currentTimeMillis() + 10000, 6*60*60*1000, pendingIntent);
    
    第一个参数影响设备的行为:

    RTC-警报不会唤醒设备;如果在设备处于睡眠状态时关闭,则在设备下次唤醒之前,不会发送该设备


    RTC_WAKEUP-在设备关闭时唤醒设备

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

    AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
    alarmManager.setRepeating(AlarmManager.RTC, System.currentTimeMillis() + 10000, 6*60*60*1000, pendingIntent);
    
    第一个参数影响设备的行为:

    RTC-警报不会唤醒设备;如果在设备处于睡眠状态时关闭,则在设备下次唤醒之前,不会发送该设备


    RTC_WAKEUP-在设备关闭时唤醒设备

    这是一个开始,其他问题如何?您回答了2和3,1和4如何POK,Alarm Manager与显示状态无关,所以即使屏幕关闭,它也可以工作。我确实回答了你的第四个问题作为可能的解决方案…不是吗?这是一个开始,其他问题呢?你回答了2和3,1和4呢POK,Alarm Manager与显示状态无关,所以即使屏幕关闭,它也可以工作。我确实回答了你的第四个问题作为可能的解决方案…不是吗??