Android 如何避免用户在下载过程中关闭屏幕导致wifi关闭

Android 如何避免用户在下载过程中关闭屏幕导致wifi关闭,android,Android,在我的应用程序中,我使用AsyncTask下载大文件(300M+)。我注意到,当用户关闭屏幕(锁定设备)时,wifi将断开连接,下载将挂起 我想知道是否有可能避免这种情况?在这种情况下,通常的做法是使用a使CPU保持清醒,并使用a使wifi保持连接,这样即使屏幕关闭,您的应用程序也会保持运行 完成后别忘了打开锁 您需要在应用程序中实现WakeLock。Wakelock将在屏幕关闭时唤醒CPU,并以正常方式执行操作 在启动AsyncTask之前写下以下代码 PowerManager pm = (P

在我的应用程序中,我使用
AsyncTask
下载大文件(300M+)。我注意到,当用户关闭屏幕(锁定设备)时,wifi将断开连接,下载将挂起


我想知道是否有可能避免这种情况?

在这种情况下,通常的做法是使用a使CPU保持清醒,并使用a使wifi保持连接,这样即使屏幕关闭,您的应用程序也会保持运行


完成后别忘了打开锁

您需要在应用程序中实现WakeLock。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();
您需要编写
wl.release()
on PostExecution()方法。您需要在AndroidManifest.xml中定义权限,如下所示

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


不要让屏幕一直打开。首先看一下DownloadManager类。。。如果您仍然使用asynctask搜索唤醒锁(PowerManager类),则DownloadManager仅在api级别支持9+。我不能使用它。还有一个,当你完成你的操作时,不要忘记释放它,方法是执行wl.release()。我鼓励你读这篇()因为wwakelock几乎不会影响电池消耗。@tanou,请阅读完整的答案,我已经提到了这一部分。:)我的错误,页面未刷新;)太好了,这能解决我的问题吗?你能解释一下原因吗?