我在閱讀大量有關此主題的衝突信息,因此要問自己一些具體的代碼示例。只有當手機處於睡眠狀態時,我的Android應用程序在嘗試從後臺服務發出HTTP請求時,出現「網絡不可用」錯誤。只有當我收到這些錯誤時,手機纔會使用移動網絡(建築物內沒有Wi-Fi)。Android睡覺時的互聯網連接問題
我使用此代碼來安排我的服務:
static private void SchedulePoll(Context context,int minsFromNow)
{
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MINUTE, minsFromNow);
Intent intent = new Intent(context, PSDroidBroadcastReceiver.class);
PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), sender);
}
我的服務取得PARTIAL_WAKE_LOCK,然後調用:
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
在這一點上,我得到一個網絡不可用例外,只當手機處於睡眠模式時。
在睡眠模式下是否有這樣的問題是正常的,還是應該能夠從我的服務中建立互聯網連接?似乎很多應用程序檢查電子郵件和其他東西,所以它應該是正常的,大部分時間工作?
我查看了電話設置,並確保與背景連接相關的任何內容都已啓用。這是一個Sprint HTC,Evo我認爲。
它是哪種設備/型號和移動網絡?你說「Sprint HTV Evo」,但你可以在OP中加入更多的信息。取下電池後,您可以在電池下方找到電話信息...關機。此外,您可以使用系統信息應用程序來顯示此和OS/Android版本信息。而且,是的,就像你在下面的評論中所說的那樣......做調試是唯一的出路。也有這樣的應用程序,所以你不必經過這麼多麻煩得到這些信息(在市場上搜索_logcat_)。使用該信息編輯原始帖子,您將獲得更多幫助。 – TryTryAgain
非常感謝,logcat非常棒,正是我未來調試所需要的。 – eselk