Serviço de Background sendo morto no android

Nós desenvolvemos um aplicativo Android que envolve um serviço em segundo plano. Para implementar este serviço de segundo plano, usamosIntentService. Queremos que o aplicativo pesquise no servidor a cada60 seconds. Então noIntentService, o servidor é pesquisado em um loop while. No final do loop while nós usamosThread.sleep(60000) para que a próxima iteração comece somente após 60 segundos.
Mas noLogcat, Vejo que às vezes leva o aplicativo mais de 5 minutos para acordar (sair do sono e iniciar a próxima iteração). Nunca é1 minute como queremos que seja.

Qual é a razão para isto? Os serviços de segundo plano devem ser implementados de maneira diferente?

Problema2

Android mata este processo de fundo (serviço de intenção) depois de algum tempo. Não posso dizer exatamente quando. Mas às vezes é hora e às vezes dias antes do serviço de segundo plano ser morto. Eu agradeceria se você me dissesse a razão disso. Porque os serviços não devem ser mortos. Eles são feitos para rodar em segundo plano enquanto quisermos.

Código:

@Override
 protected void onHandleIntent(Intent intent) {
  boolean temp=true;
  while(temp==true) {
    try {
      //connect to the server 
      //get the data and store it in the sqlite data base
    }
    catch(Exception e) {
      Log.v("Exception", "in while loop : "+e.toString());
    }
    //Sleep for 60 seconds
    Log.v("Sleeping", "Sleeping");
    Thread.sleep(60000);
    Log.v("Woke up", "Woke up");

    //After this a value is extracted from a table
    final Cursor cur=db.query("run_in_bg", null, null, null, null, null, null);
    cur.moveToLast();
    String present_value=cur.getString(0);
    if(present_value==null) {
       //Do nothing, let the while loop continue  
    }
    else if( present_value.equals("false") || present_value.equals("False") ) {
       //break out of the while loop
       db.close();
       temp=false;
       Log.v("run_in_bg", "false");
       Log.v("run_in_bg", "exiting while loop");
       break;
    }
  }

}

Mas sempre que o serviço é morto, acontece quando o processo está adormecido. O último log lê -Sleeping : Sleeping. Por que o serviço é morto?

questionAnswers(10)

yourAnswerToTheQuestion