2014-01-06 15 views
0

在我的應用程序中,我使用AsyncTask下載大文件(300M +)。我注意到,當用戶關閉他們的屏幕(鎖定他們的設備)時,wifi將斷開連接並且下載將掛起。如何避免用戶在下載過程中關閉導致WiFi關閉的屏幕

我想知道是否有可能避免這種情況?

+0

請勿保持屏幕亮起。 Firt看看DownloadManager類...如果你仍然使用asynctask搜索喚醒鎖(PowerManager類) – Selvin

+0

DownloadManager僅在api級別支持9+。我無法使用它。 – hguser

+0

還有http://developer.android.com/reference/android/net/wifi/WifiManager.WifiLock.html – Selvin

回答

1

您需要在您的應用程序中實現WakeLock。喚醒鎖將喚醒屏幕關閉的CPU,並以正常方式執行操作。

寫在開始的AsyncTask先下去下面的代碼,

PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); 
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK|PowerManager.ACQUIRE_CAUSES_WAKEUP, "bbbb"); 
wl.acquire(); 

你需要寫上PostExecution()方法wl.release();。並且您需要在AndroidManifest.xml中定義權限,如下所示:

<uses-permission android:name="android.permission.WAKE_LOCK" /> 
+0

當你完成wl.release()時不要忘記釋放它。我鼓勵你閱讀這個(http://developer.android.com/reference/android/os/PowerManager.WakeLock.html),因爲wwakelock幾乎不會影響電池消耗。 – tanou

+0

@tanou,請閱讀完整的答案,我已經提到過那部分。 :) – Vigbyor

+0

我的壞,頁面沒有刷新;) – tanou

0

這種情況下的常見做法是取WakeLock以保持CPU醒來,並採取WifiLock以保持wifi連接,以便即使屏幕關閉,您的應用也能繼續運行。

當你完成後,不要忘記釋放鎖!