2012-11-27 27 views
0

我有一個聊天application.my代碼有一個線程管理互聯網連接。 但幾分鐘後我的線程進入睡眠狀態。 我知道我應該使用WakeLock來喚醒CPU和我的線程。 但是當我使用下面的代碼,電池使用率上升。在Android中連續使用互聯網連接

if (mWakeLock == null) { 
         mWakeLock = pm.newWakeLock(
           PowerManager.PARTIAL_WAKE_LOCK, 
           "NewOnlineSignalingPowerManagerTag"); 
        } 
        if (mWifiLock == null) { 
         mWifiLock = wm.createWifiLock(
           WifiManager.WIFI_MODE_FULL, 
           "NewOnlineSignalingWifiManagerTag"); 
        } 
        if (!mWakeLock.isHeld()) { 
         logging.l("mWakeLock.acquire()"); 
         mWakeLock.acquire(); 
        } 
        if (!mWifiLock.isHeld()) { 
         logging.l("mWifiLock.acquire()"); 
         mWifiLock.acquire(); 
        } 

你願意我更好嗎?

+0

我建議刪除該喚醒鎖。當用戶收到回覆時,您的應用應該向用戶發送通知。 – 2012-11-27 05:56:11

+0

我知道,但如果用戶不使用手機,線程將關閉,並且TCP連接disconnect.so您不能接收任何數據。 –

+0

您是否在使用服務接收數據? – 2012-11-27 06:01:48

回答

0

爲什麼你必須管理互聯網連接?你不需要。使用Android服務,不會有線程問題,也不會有睡眠問題。

+0

你確定服務不進入睡眠狀態嗎? –

+1

是的,它不會。當然,如果內存真的很低,服務可以被Android終止。但通常情況並非如此。另外,如果您正在開發聊天應用程序,則應該使用Google的GCM(推送服務)。所以應用程序會自動調用,並且不需要服務。它是聊天應用程序的最佳方式 – nithinreddy