2012-11-27 4 views
0

나는 chat.my 코드에 인터넷 연결을 관리하는 스레드가 있습니다. 몇 분 후에 내 스레드가 잠이 든다. 나는 CPU와 스레드를 깨울 때 WakeLock을 사용해야한다고 알고 있습니다. 하지만 아래 코드를 사용하면 배터리 사용량이 늘어납니다.안드로이드에서 인터넷 연결을 계속 사용하십시오.

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

웨이크 잠금 장치를 제거하는 것이 좋습니다. 사용자가 답장을 받으면 앱이 사용자에게 알림을 보내야합니다. –

+0

휴대 전화를 사용하지 않으면 스레드가 끊어지고 TCP 연결이 끊어집니다. 따라서 데이터를받을 수 없습니다. –

+0

데이터 수신에 서비스를 사용하고 있습니까? –

답변

0

인터넷 연결을 왜 관리해야합니까? 당신은 필요가 없습니다. Android 서비스를 사용하면 스레드 문제 또는 절전 문제가 발생하지 않습니다.

+0

서비스가 잠자기 상태가되지 않습니까? –

+1

예, 그렇지 않습니다. Ofcourse 서비스는 메모리가 정말로 부족한 경우 Android에 의해 종료 될 수 있습니다. 그러나 대개는 그렇지 않습니다. 또한 채팅 응용 프로그램을 개발하는 경우 Google의 GCM (푸시 서비스)을 사용해야합니다. 따라서 앱이 자동으로 호출되므로 서비스가 필요하지 않습니다. 채팅 앱을위한 최적의 방법 – nithinreddy