2010-06-14 13 views
5

Je développe une application dans laquelle j'ai besoin de la connexion TCP pour rester en vie. J'ai mis en place une sorte de système ping/pong pour le faire. Il fonctionne parfaitement lorsque l'écran est allumé, mais quand il va du téléphone arrête de répondre aux pings après un certain temps. J'ai créé un verrou de réveil Wi-Fi, mais je rencontre toujours le même problème ..Le verrouillage de réveil ne semble pas fonctionner

Voici mon code:

private static WifiManager wm = getSystemService(this.WIFI_SERVICE); 
private static WifiLock wl = null; 

public static void lock(){ 
    wl = wm.createWifiLock(WifiManager.WIFI_MODE_FULL , App.TAG); 
    if(!wl.isHeld()){ 
     wl.acquire(); 
    } 
} 

public static void unlock(){ 
    if(wl != null){ 
     if(wl.isHeld()){ 
      wl.release(); 
     } 
    } 
} 

Toutes les idées?

+0

Avez-vous invoqué la méthode 'acquire()' sur l'objet WakeLock? –

+0

qu'est-ce que wi-fi wake lock? Voulez-vous dire verrouillage de l'écran? –

+0

J'ai mis à jour la question avec mon code – shuwo

Répondre

2

Vous devez acquérir PowerLock de here avec l'indicateur SCREEN_DIM_WAKE_LOCK/PARTIAL_WAKE_LOCK.

+0

donc il n'est pas possible de garder le wi-fi lorsque l'écran est complètement éteint? – shuwo

+1

Non. C'est possible. WiFi-Lock vous permet d'économiser la connexion perdue. Vous pouvez également utiliser PARTIAL_WAKE_LOCK. Je pense que le problème est que vous n'avez pas acquis CPU-Lock, donc votre code n'est pas exécuté. –