>
Estou com dúvidas com relação a criar um Alarme para gerenciar a execução de um service de tempos em tempos. Creio que estou me perdendo na questão de contextos :
Tenho uma Classe Conectividade que checa o status da Conexao de Internet :
public class Conectividade {
private Context ctx;
public Conectividade(Context _ctx){
this.ctx = _ctx;
}
public int checaConectividade(){
ConnectivityManager conexao;
conexao = (ConnectivityManager) ctx.getSystemService(Context.CONNECTIVITY_SERVICE);
if(conexao.getNetworkInfo(0).isConnected()){ // 0 = 3G,2G
Log.d("TCC","Internet Conectada via 3g/2g");
return 0;
}
else if(conexao.getNetworkInfo(1).isConnected()){ // 1 = WiFi
Log.d("TCC","Internet Conectada via Wifi");
return 1;
}
else{
Log.d("TCC","Sem conexão de Internet");
return -1;
}
}
}
Tenho uma classe Monitor que tem a finalidade de criar o agendamento da tarefa para checar a conexão de internet de tempos em tempos :
public class Monitor {
private Context _ctx;
public Monitor(Context ctx){
_ctx = ctx;
}
public void MonitorConectividade(){
PendingIntent pi;
Calendar tempo;
AlarmManager alarmeTarefa;
Log.d("TCC", "Entrou no MonitorTarefa");
Intent it = new Intent("INICIARMONITOR");
pi = PendingIntent.getService(_ctx, 0, it,0);
tempo = Calendar.getInstance();
tempo.setTimeInMillis(System.currentTimeMillis());
tempo.add(Calendar.SECOND,10);
alarmeTarefa = (AlarmManager) _ctx.getSystemService(Context.ALARM_SERVICE);
long time = tempo.getTimeInMillis();
alarmeTarefa.setRepeating(AlarmManager.RTC_WAKEUP, time, 5000, pi);
}
}
O serviço em si :
public class MonitorTarefaService extends Service implements Runnable {
Conectividade conn =null;
public void onCreate(){
conn = new Conectividade(MonitorTarefaService.this);
Log.d("TCC","Serviço criado");
new Thread(MonitorTarefaService.this).start();
}
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public void run() {
// TODO Auto-generated method stub
Log.d("TCC","Servico executado");
Log.d("TCC",Integer.toString(conn.checaConectividade()));
}
}
Na Activity eu criaria uma instância da classe Monitor invocando o metodo MonitorConectividade.
Monitor mon = new Monitor(MainActivity.this);
mon.MonitorConectividade();
Quando rodo a aplicação, ela executa o serviço uma vez e não executa mais. Poderia me dar um luz por gentileza ?
Obrigado.
Olá
O serviço para de rodar?
Outra coisa, ao invês de criar um alarme, faça o teu serviço rodar um procedimento de X em X tempo.
Lá na service faz isso, dentro do onCreate. Ai não precisa do Alarm.
Timer mTimer = new Timer();
mTimer.schedule(new TimerTask() {
@Override
public void run() {
// Ai verifica a conexão.
}
}, 0, 7000);
} catch (Exception ex) {
}