2013-04-24 3 views
2

У меня есть фоновое обслуживание в моем приложении для обнаружения точек Wi-Fi. Он работает хорошо, но когда устройство переходит в спящий режим, эта служба перезапускается. Я настроил Wake Lock и Wifi Lock.Перезапуск службы через 1 час

Мой код: (Создать сервис)

public void onCreate(){ 
    super.onCreate(); 
    Settings.System.putInt(getContentResolver(), 
    Settings.System.WIFI_SLEEP_POLICY, 
    Settings.System.WIFI_SLEEP_POLICY_NEVER); 

    wm = (WifiManager) this.getSystemService(Context.WIFI_SERVICE); 
    wifiLock = wm.createWifiLock(WifiManager.WIFI_MODE_FULL, "SD1xWifi"); 
    wifiLock.acquire(); 

    mgr = (PowerManager)getSystemService(Context.POWER_SERVICE); 
    wakeLock = mgr.newWakeLock(PowerManager.FULL_WAKE_LOCK, "SD1x"); 
    wakeLock.acquire(); 
} 

Мой код: (Запустить службу)

public void onStart(Intent i, int x){ 
    super.onStart(i, x); 
    Log.i("TesteWifi", "Find spots wifi started"); 
    try{ 
     wm.startScan(); 
     timer.scheduleAtFixedRate(new mainTask(), 0, 1000); 
    }catch(Exception e){ 
     e.printStackTrace(); 
     Log.i("TesteWifi", "Error on start service find wifi"); 
    } 
} 

Мой код: (TimerTask)

private class mainTask extends TimerTask { 

     @Override 
     public void run() { 
      // ...timertask processes... 
     } 

Мой код: (Service Начато в MainActivity)

try { 
    startService(obj.getServiceAutoCheckin()); 
} catch (Exception e) { 
    Log.i("Services", "ERRO: " + e.getMessage()); 
} 

Почему мой сервис перезагружен?

+0

Как начать эту услугу? – minhaz

+0

Вы покажете мне свой Сервисный код? –

+0

Возможно, вы делаете все это неправильно - разместите более подробную информацию (и лучше отформатируйте). Для одного вы должны использовать диспетчер аварийных сообщений, а не долгое обслуживание: http://stackoverflow.com/questions/15451347/android-design-background-long-running-service-or-alarmmanager. Вы освобождаете замок, не так ли? Опубликуйте больше кода и лучше объясните –

ответ

1

использовать радиовещательный приемник для получения услуги от службы.

0

Я решил проблему с изменением события запуска службы. Я изменил событие onStartCommand. Ответ службы START_STICKY.

Docs