2013-07-01 7 views
1

Android 기반 SMS 서버를 구축하고 있습니다.Android 기반 SMS 서버 및 WakeLock?

새로운 SMS가 (무한 루프에서) 전송되도록 서버 (매 x 초)를 요청해야한다. Android 기기는 USB를 통해 항상 서버에 연결됩니다.

새 메시지를 가져 오는 중 서비스가 실행 중이고 24 시간 연중 무휴로 실행해야합니다. 배터리 소모가 문제가되지 않으므로 WakeLock은 어떻게 사용해야합니까?

부분 잠금에 대한 기사를 읽었으므로 충분하다고 생각됩니다.

그러나 wakeLock.acquire();를 호출해야 할 때 어떤 단서도 찾지 못했습니다. 및 wakeLock.release();

내가 그런 일을 할 수 있다고 생각하지 않습니다

while(true){ 
    wakeLock.acquire(); 
    //Do stuff 
    wakeLock.release(); 
    Thread.sleep(10000); 
} 

아이디어를 고려 ... 모든 입력이 크게 apperciated 될 것이다. 예를 들어 일일 재시작 스케줄러에 집착하지 않도록 일정을 잡는 것이 맞습니까? 등 ...

답변

1

바와 같이 here 설명 장치를 깨워하기 위해 울부 짖는 방법을 사용하여 잠금의 다양한 유형을 사용할 수 있습니다. 당신이 항상되고 싶은 경우에, 당신은 루프 외부에서 획득 할 수 있습니다 :

boolean end = false; 
wakeLock.acquire(); 
while(!end){ 

    //Do stuff 

    Thread.sleep(10000); 
} 
wakeLock.release(); 

하지만 당신이 정말로 그것을 위해 루프를 사용하지 않아야합니다, 반복 작업을 수행하는 대신 핸들러를 시도 : http://developer.android.com/reference/android/os/Handler.html

예 :

private class MyRunnable implements Runnable { 

    @Override 
    public void run() { 
     // Do stuff 
     handler.postDelayed(new MyRunnable(), 100000); 

    } 

} 

Handler handler = new android.os.Handler(); 
handler.postDelayed(new MyRunnable(), 1000000); 

자주하고 짧은 기간에 반복 작업을해야 할 경우 핸들러가 유용합니다. 기간이 길면 (예 : 몇 시간) AlarmManager : Alarm Manager Example 을 사용하십시오. 이는 할 수있는 일의 좋은 예이며, 작업에 wakelock을 사용합니다.

+0

핸들러를 사용하여 코드를 공유 할 수 있습니까? –

+0

당신은 서비스의 자물쇠를 사기 위하여 그것을 제안하고 결코 풀어 놓지 않기 위하여 제안 하는가? 실이 자고 있으면 배터리는 어떻게됩니까? –

+0

그럼 프로세서가 최대 전력으로 작동하지만 작동해야합니다. 거기에 여러 가지 솔루션, 나는 내 대답을 업데이 트됩니다. – NitroG42

0

private void wakeUpTheDevice() 
{ 

    pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); 
    wL = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK|PowerManager.ACQUIRE_CAUSES_WAKEUP, "wakeupdevice"); 
    if ((wL != null) &&   // we have a WakeLock 
      (wL.isHeld() == false)){ // but we don't hold it 
     wL.acquire(); 
     } 
    } 
+0

기기가 잠자기 상태 일 때 어떻게이 방법을 호출 할 수 있습니까? –

+0

이 방법을 호출하는 방법은 무엇입니까? – Sri