Java 安卓应用程序在设备睡眠时停止工作

Java 安卓应用程序在设备睡眠时停止工作,java,android,Java,Android,我在android应用程序中遇到了一个奇怪的问题 我发出警报启动服务,类似这样: public class ExecutaAcoes extends Service implements Runnable { protected static final String URL = "http://www.mysite.com.br" @Override public void onCreate() { Log.i("Teste","Service started");

我在android应用程序中遇到了一个奇怪的问题

我发出警报启动服务,类似这样:

public class ExecutaAcoes extends Service implements Runnable {     
protected static final String URL = "http://www.mysite.com.br"
@Override
public void onCreate() {        
Log.i("Teste","Service started");
    new Thread(this).start();
}
@Override
public void run() {
try {
     Log.i("Teste","Thread started");                       
     HttpClient client = new DefaultHttpClient();
     HttpGet request = new HttpGet(URL);
     HttpResponse response = client.execute(request);
     HttpEntity entity = response.getEntity();
     if (entity != null) {
               ...
    } catch (Throwable e) {
       Log.i("Teste","erro excepty: "+e.toString());
    } finally {

};   
因此,每隔30秒alarm manager就会启动服务,并访问网页www.mysite.com.br。这段代码在emulator中运行良好,但在我的设备上不起作用。当手机处于休眠状态(屏幕变黑)时,网页将无法访问,应用程序将在catch(Throwable e)中返回错误:“java.net.UnknownHostException:主机未解析”或返回套接字错误

奇怪的是,如果我按下设备上的任何按钮,屏幕就会亮起,应用程序就会恢复正常工作,网站也会被访问。 有人知道如何解决这个问题吗

谢谢你的帮助
Alexandre

您应该尝试此操作,以便在完成操作之前保持Wifi处于活动状态。当手机休眠时,Wifi将关闭。希望这有帮助

这是正常的。当设备进入睡眠状态时,某些功能不可用
AlarmManager
持有CPU唤醒锁,以便在警报关闭时执行
onReceive()
方法。请注意,这仅影响此方法:如果启动服务,此保证不扩展到此服务。此外,它只给您CPU唤醒锁,这意味着CPU将运行,而不是屏幕和网络

要从您的服务访问Wifi,您需要购买。有关3g、屏幕和其他功能,请参阅


此外,每30秒运行一次网络扫描会在数小时内耗尽电池电量——用户不会喜欢这样。重新考虑使用或。

您能说明如何请求此警报吗?(无关:如果手机休眠,为什么必须每30秒更新一次?这对电池寿命有害)