Ver mensagens sem resposta | Ver tópicos ativos Hoje é 21 Mai 2013, 11:15



Este tópico está trancado, você não pode editar mensagens ou enviar respostas.  [ 4 Mensagens ] 
 [RESOLVIDO] Parar serviço depois de um determinado tempo. 
Autor Mensagem
What is ADT?
What is ADT?

Data de registro: 09 Ago 2012, 03:47
Mensagens: 21
Mensagem [RESOLVIDO] Parar serviço depois de um determinado tempo.
Boa tarde amigos, tudo bem? ...Por aqui ta um saco ja não basta-se eu quebrando a cabeça, ainda passas esses candidatos ladrões fazendo passeata...

Mas a duvida é o seguinte, utilizei o AlarmManager para agendar um service. Agora a duvida é:

O service vai rodar por um determinado tempo e depois se destruir. O que eu faço para ele se destruir de acordo com um tempo setado pelo usuario. Por exemplo ele rodar durante 3 horas. Tem algum metodo que eu dou um delay e depois de 3horas ele propio chama o stopservice ou self?

Pensei no handler mas dizem que ele 'dorme' junto com o celular, dessa forma quando o celular dormir para de contar o tempo para disparar a mensagem, isto esta correto?


Obrigado pessoal.. :)

_________________
Bruno Milhan
Sistemas de Informação
Universidade Federal de Mato Groso do Sul


Editado pela última vez por Bruno Milhan em 16 Set 2012, 12:30, num total de 1 vezes



15 Set 2012, 14:39
Perfil
What is ADT?
What is ADT?

Data de registro: 09 Ago 2012, 03:47
Mensagens: 21
Mensagem Re: Parar serviço depois de um determinado tempo.
Fiz testes utilizando o Handler:

public void stopservice(){
    new Handler().postDelayed ( new  Runnable ()  {
        public void run ()  {
            stopSelf ();
        }
    },  1000*60);    
}


Testei no celular, Mas ele só conta o delay quando o celular esta com a tela ligada, se desligar a tela ele não funciona, ou seja realmente ele só funciona quando não esta em Standby dessa forma não serve para minha aplicação...

Poxa, estou desde as 9 da manha sem parar tentando resolver esse problema, alguma luz... :S

Abraços pessoal

_________________
Bruno Milhan
Sistemas de Informação
Universidade Federal de Mato Groso do Sul


15 Set 2012, 17:32
Perfil
Dalvik Virtual Machine
Dalvik Virtual Machine

Data de registro: 17 Jul 2011, 10:55
Mensagens: 1990
Localização: São Paulo
Mensagem Re: Parar serviço depois de um determinado tempo.
Olá
Tenta um alarm que dispara um broadcast que dá um stopService

_________________
Abraços
___________
Novo App: CalcMat - Calculadora de materiais para concreto
Blog: Agorandroid - sobre programação Android
Twitter: @Agorandroid
___________
Campanha: Facilite sua vida e a dos outros usuários
Netiqueta:Procure responder as sugestões. Quando encontrar a solução, coloque [Resolvido] no primeiro post o mais rápido possível. Lembre-se de agradecer às pessoas que ajudaram e poste a solução do problema.


15 Set 2012, 17:39
Perfil
What is ADT?
What is ADT?

Data de registro: 09 Ago 2012, 03:47
Mensagens: 21
Mensagem Re: Parar serviço depois de um determinado tempo.
Solução encontrada:

Create an Intent to start the Service. Set the action to a custom action, say"com.yourapp.action.stopservice".
Using AlarmManager, start the Intent to start the Service (whatever you are doing right now). This will be delivered to the onStartCommand() of the Service, if it is is already running.
In onStartCommand(), check the action of the incoming Intent. Ifaction.equals("com.yourapp.action.stopservice"), stop the Service usingthis.stopSelf().

Na pratica isso ficou assim:
Na minha Activity que chama o service implementei o metodo:
public void agendar2(int segundos) {
        Intent it = new Intent("STOP_SERVICE");
        PendingIntent p = PendingIntent.getService(HomeSilenciar.this, 0, it, 0);
        Calendar c = Calendar.getInstance();
        c.setTimeInMillis(System.currentTimeMillis());
        c.add(Calendar.SECOND, segundos);
        AlarmManager alarme = (AlarmManager) getSystemService(ALARM_SERVICE);
        long time = c.getTimeInMillis();
        alarme.set(AlarmManager.RTC_WAKEUP, time, p);
       
    }


E no meu service:
action = intent.getAction();
        Log.i("CATEGORIA", action);
        if(action.equals("STOP_SERVICE")){
            stopSelf();


Funciona perfeitamente, testado de varias maneiras!

Obrigado, pessoal

_________________
Bruno Milhan
Sistemas de Informação
Universidade Federal de Mato Groso do Sul


16 Set 2012, 12:14
Perfil
Mostrar mensagens anteriores:  Organizar por  
Este tópico está trancado, você não pode editar mensagens ou enviar respostas.   [ 4 Mensagens ] 

Quem está online

Usuários vendo este fórum: ademilson, adenilsonsena, agtavares, Alex Marcelo Burnett, alexvbh, andepunk, Andre Brito, Antonio Carlos, Arthas, attomweb, axellsan, blurkness, brenno, Bruno, BrunoO, C0GuM3I0, Caique, cesao, CKorneLL, Clauber, comolatti, Crazy_Droid, Cristranus, denisfln, dentimskol, dfreitas, digiwise, dnakamashi, ederson_4, edson dias de gusmao, fabrizior, faco, Felipe Marcondes, Francisco_Geraldo, frederico.affini, Gabriel Teófilo, gfgodoy, grandebaro, HanNiBaLSeTDf, helder84, hugomarinho, humberto, infonlinebr, Javanês, juliancesar, jwv, kpinheiro, kristopher, leonardodamata, loferreira, lucastgomes, lucianoedipo, lufreitas, luizcarlosvb, Luna, maolveira, marciosoliveira, marcosf63, marinho5, masf_33, Maxtremus, Meticore, mrangel, nandopierre, o-raposa, Odigooogle™, oliveiramc, oliverlessa, Orivalde, paulosantos, pedro, pemam.com.br, persiomotta, pfsmorigo, phpower1, Princesa Léia Organa, rafaeldecker, Ranieri, rdchaves, reginaldo, renatodondoni, rfrafa, ricardo_listadelphi, RodReis, Rogério, romualdo, romuloff, ruizsa, sasuke_sarutobi, scattonevi, Shmi Skywalker, SidneiCP, siker C3PO, suportecr, tassiovirginio, tchou, the_hulk_knifer, tiagocomerio, waideman, wingdoido, WiseNut, wylken, xa:=zin, xGambit, Yuri, zeantonio e 9 visitantes


Você não pode criar novos tópicos neste fórum
Você não pode responder tópicos neste fórum
Você não pode editar suas mensagens neste fórum
Você não pode excluir suas mensagens neste fórum
Você não pode enviar anexos neste fórum

Procurar por:

© 2007 - 2013 Portal Android - Comunidade de Desenvolvedores da Plataforma Android

Estamos no Linkedin    Siga-nos no twitter


Powered by phpBB - Hospedado por Bemobi