2011-12-23 72 views
0

那麼,我想每6個小時左右檢查一次網站的版本(這部分我知道如何)。如何每6小時執行一次任務或當網絡適用於Android?

因此,我正在考慮爲此製作一個service並使用AlarmManager

因爲我需要互聯網來檢查網站的版本,所以我需要一些東西來查看互聯網是否打開或者打開時的狀態。經過時間的推移,我會


所以我的問題(是的,不只是一個!)是:

  1. 是否AlarmManager工程,即使顯示器進入睡眠狀態?當設備醒來它知道有多少時間通過,如果通過更多的6小時它執行任務?
  2. 如何檢查互聯網何時可用?
  3. 如何知道互聯網何時開啓? (某種broadcast?)
  4. 這是一個很好的解決方案嗎?

回答

3

報警管理:

報警管理器沒有任何與顯示狀態,所以它可以工作,即使屏幕關閉。

網絡Avaiability片段:

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別忘了在您的清單

一個可能的解決方案添加權限

曾經作過類似下面的事件廣播的接收器屏幕關閉&屏幕,

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

在這種接收器給邏輯請求,如果網絡可用..

+0

這是一個開端,何談其他問題? – 2011-12-23 17:19:55

+0

我很快就會加入他們,這將是一個長的答案... – 2011-12-23 17:21:06

+0

我已經更新了我的答案。你需要更多信息 ? – 2011-12-23 17:28:37

1

關於鬧鐘經理。這裏是一個可能的代碼:

AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
alarmManager.setRepeating(AlarmManager.RTC, System.currentTimeMillis() + 10000, 6*60*60*1000, pendingIntent); 

第一個參數影響如何循規​​蹈矩設備:

RTC - 報警不喚醒設備;如果它熄滅,而該設備是睡着了,它不會被交付的設備醒來,直到下一次

RTC_WAKEUP - 醒來時,它熄滅設備

相關問題