2013-09-11 2 views
1

Я пытаюсь написать простую операцию с потоком, который записывает значение в текстовые файлы каждые N секунд.Пауза для Android в режиме ожидания

Проблема заключается в том, что через несколько минут я запустил Activity, с телефоном в режиме ожидания, поток когда-то останавливается в течение большего времени, даже минут.

В Run() Я должен записать файл, а не спать в течение N секунд.

public void run() { 
    isrunning = true; 
int cont=0; 
    try { 
     while (isrunning) 
     { 
      es.writeSD("- THREAD:" + cont, true); 
      Thread.sleep(1000); 
      es.writeSD("- THREAD - sending: " + cont,true);    
      cont++; 
     } 
    } 
    catch (InterruptedException e) { 
     es.writeSD("- THREAD - InterruptedException: " + e.getMessage(),true); 
    } 
    catch (Exception e) { 
     es.scriviSD("- THREAD - Exception: " + e.getMessage(),true); 
    } 
} 

Это журнал с меткой времени

20130911T154448: - НИТИ: 36

20130911T154449: - НИТКИ отправки: 36

20130911T154449: - НИТИ: 37

20130911T154652: - РЕЗЬБА ПЕРЕДАЧИ: 37

20130911T154652: - НИТИ: 38

20130911T154656: - НИТКИ отправки: 38

ответ

3

Вы должны заставить устройство бодрствовать. Но будьте осторожны, это сработает аккумулятор очень быстро!

PowerManager «s WakeLock является то, что вам нужно: https://developer.android.com/reference/android/os/PowerManager.WakeLock.html

При запуске тему, acquire() на WakeLock, release() его, когда вы закончите.

public void run() { 
    PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); 
    PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "My Tag"); 
    wl.acquire(); 
    isrunning = true; 
    int cont=0; 
    try { 
     while (isrunning) { 
      es.writeSD("- THREAD:" + cont, true); 
      Thread.sleep(1000); 
      es.writeSD("- THREAD - sending: " + cont,true);    
      cont++; 
     } 
    } catch (InterruptedException e) { 
     es.writeSD("- THREAD - InterruptedException: " + e.getMessage(),true); 
    } catch (Exception e) { 
     es.scriviSD("- THREAD - Exception: " + e.getMessage(),true); 
    } finally { 
     wl.release(); 
    } 
} 
+0

+1 для 'PARTIAL_WAKE_LOCK' – JRomero

Смежные вопросы