Ver mensagens sem resposta | Ver tópicos ativos Hoje é 21 Dez 2014, 15:18



Responder Tópico  [ 9 Mensagens ] 
 Problemas com Service 
Autor Mensagem
What is AVD?
What is AVD?

Data de registro: 10 Jul 2012, 14:54
Mensagens: 12
Mensagem Problemas com Service
Olá pessoal,

tenho uma aplicação que roda um serviço em background no emulador funciona certinho,
mas no aparelho celular não, quando o celular fica inativo em "sleep" meu serviço não é executado,
preciso de ajuda rsrs

obrigado.


13 Jul 2012, 09:31
Perfil
Dalvik Virtual Machine
Dalvik Virtual Machine

Data de registro: 17 Jul 2011, 10:55
Mensagens: 2549
Localização: São Paulo
Mensagem Re: Problemas com Service
Olá
Veja essa dica: viewtopic.php?f=7&t=17120

_________________
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
Cuide do ciclo de vida do seu tópico:
no onCreate(): seja claro, se necessário poste o código e as mensagens de erro.
no onClick(): responda às sugestões.
no onStop(): evite "ninguém?", "alguém?", etc. Procure acrescentar alguma nova informação.
no onDestroy(): resolvido o assunto, poste imediatamente a solução, e, coloque no título do primeiro post [Resolvido].


13 Jul 2012, 09:44
Perfil
What is AVD?
What is AVD?

Data de registro: 10 Jul 2012, 14:54
Mensagens: 12
Mensagem Re: Problemas com Service
Obrigado A H Gusukuma,

eu fiz aquele código dentro do meu serviço - não sei se é la mesmo - e ficou do mesmo jeito depois de um tempo sem mexer no celular meu serviço
para de funcionar :-(


13 Jul 2012, 15:39
Perfil
Dalvik Virtual Machine
Dalvik Virtual Machine

Data de registro: 17 Jul 2011, 10:55
Mensagens: 2549
Localização: São Paulo
Mensagem Re: Problemas com Service
Posta mais detalhes sobre o seu serviço. Código, etc.

_________________
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
Cuide do ciclo de vida do seu tópico:
no onCreate(): seja claro, se necessário poste o código e as mensagens de erro.
no onClick(): responda às sugestões.
no onStop(): evite "ninguém?", "alguém?", etc. Procure acrescentar alguma nova informação.
no onDestroy(): resolvido o assunto, poste imediatamente a solução, e, coloque no título do primeiro post [Resolvido].


13 Jul 2012, 20:37
Perfil
What is AVD?
What is AVD?

Data de registro: 10 Jul 2012, 14:54
Mensagens: 12
Mensagem Re: Problemas com Service
Então o serviço que criei fica verificando de tempo em tempo os dados do banco
para verificar as tarefas que o usuário cadastrou e emitir um alerta.


16 Jul 2012, 09:43
Perfil
What is AVD?
What is AVD?

Data de registro: 10 Jul 2012, 14:54
Mensagens: 12
Mensagem Re: Problemas com Service
Esse é o receiver que inicia o serviço no boot ta funcionando legal

public class Receiver1 extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        if(!isServiceRunning(context, "br.com.servico.Servico")){
            Intent myIntent = new Intent(context, Servico.class);
            context.startService(myIntent);        
        }
       
    }

    private boolean isServiceRunning(Context context, String service) {
        ActivityManager manager = (ActivityManager) context.getSystemService(Application.ACTIVITY_SERVICE);
        for (RunningServiceInfo cServico : manager.getRunningServices(Integer.MAX_VALUE)) {
            if (service.equals(cServico.service.getClassName())) {
                return true;
            }
        }
        return false;
    }


Esse é o serviço que criei como teste que funciona mas quando o celular entra em Sleep ele para.
se puder me ajudar agradeço.

public class Servico extends Service implements Runnable{

    private String tag = "Serviço Teste";
    PowerManager pm ;
    PowerManager.WakeLock wl;
   
    String nomeBanco = "cadastro";
    SQLiteDatabase bancoDados = null;
    Cursor cursor;
   
    private Handler handler;
     
     private NotificationManager mNM;
     private int NOTIFICATION = R.string.servico_local_iniciado;
   
    @Override
    public void onCreate(){
         pm = (PowerManager) getSystemService(POWER_SERVICE);
         wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "LemedWakeLock");
         wl.acquire();
         
         mNM = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
         showNotification();
         
         handler = new Handler();

         handler.post(this);
    }
   
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
     Log.i(tag , "Serviço iniciado");  
    
     return START_REDELIVER_INTENT;
    }
   
    @Override
    public IBinder onBind(Intent intent) {
        // TODO Auto-generated method stub
        return null;
    }
   
    @Override
    public void onDestroy(){  
        Log.i(tag , "Serviço destruido");
        wl.release();
        mNM.cancel(NOTIFICATION);
       
    }
   
     private void showNotification() {
            // In this sample, we'll use the same text for the ticker and the expanded notification
            CharSequence text = getText(R.string.servico_local_iniciado);

            // Set the icon, scrolling text and timestamp
            Notification notification = new Notification(R.drawable.ic_launcher, text,
                    System.currentTimeMillis());

            // The PendingIntent to launch our activity if the user selects this notification
            PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
                    new Intent(this, TesteServiceActivity.class), 0);

            // Set the info for the views that show in the notification panel.
            notification.setLatestEventInfo(this, getText(R.string.servico_local_apresentacao),
                           text, contentIntent);

            //startForeground(NOTIFICATION, notification);
            // Send the notification.
            mNM.notify(NOTIFICATION, notification);
        }

    @Override
    public void run() {
        if(verificaRegistro()){
            do{
                  String hora = cursor.getString(cursor.getColumnIndex("hora"));
                  Log.i(tag, "Hora banco " + hora);
           
                  Calendar cal = Calendar.getInstance();
                  cal.setTimeInMillis(System.currentTimeMillis());     
           
           
                 Log.i(tag, "Hora banco" + hora);
           
                 String horaAtual = cal.get(Calendar.HOUR_OF_DAY) + ":" + cal.get(Calendar.MINUTE);
           
                 Log.i(tag, "Hora Atual " + horaAtual);
           
                 if(hora.equals(horaAtual)){
                   Log.i(tag, "Hora igual ");
                   Intent myIntent = new Intent(getApplicationContext(), Alerta.class);
                   myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                   startActivity(myIntent);
                 }else{
                   Log.i(tag, "Hora diferente ");
                 }
            }while(cursor.moveToNext());
           
        }
         Calendar c = Calendar.getInstance();
         int segundos = c.get(Calendar.SECOND);
         int rest = (60 - segundos ) * 1000;
        handler.postDelayed(this, rest);
       
    }

    //VERIFICA SE EXISTE REGISTRO GRAVADO
    private boolean verificaRegistro() {
        try {
            bancoDados = openOrCreateDatabase(nomeBanco, MODE_WORLD_READABLE, null);
            cursor = bancoDados.rawQuery("SELECT * FROM hor", null);

            if (cursor.getCount() != 0) {
                cursor.moveToFirst();
                //mostraMensagem("Continuo", cursor.getString(cursor.getColumnIndex("continuo")));
                return true;
            } else {
                return false;
            }
        } catch (Exception e) {
            mostraMensagem("Erro no Banco de Dados",
                    "Não foi possivel verificar se existe dados no banco " + e);
            return false;
            // TODO: handle exception
        } finally {
            bancoDados.close();
        }

    }
   
    //EXIBE UMA MENSAGEM
    public void mostraMensagem(String titulo, String msg) {
        AlertDialog.Builder mensagem = new AlertDialog.Builder(
                getApplicationContext());
        mensagem.setTitle(titulo);
        mensagem.setMessage(msg);
        mensagem.setNeutralButton("OK", null);
        mensagem.show();
    }
}
 


16 Jul 2012, 18:08
Perfil
Hello Android
Hello Android

Data de registro: 29 Mai 2012, 15:14
Mensagens: 44
Mensagem Re: Problemas com Service
Seu serviço funcionando de tempos em tempos, procure fazer ele abrir, fazer seu trabalho, agendar a abertura e fechar.

Procure no proprio dev, entender o ciclo de vida de um Serviço http://developer.android.com/reference/ ... rvice.html

Para agendar sua abertura, use a classe AlargManager. Segue uma ajuda:

    public void agendaAbertura() {
        Intent it = new Intent("EXECUTA");
        PendingIntent p = PendingIntent.getBroadcast(Locator.this, 0, it, 0);
        Calendar c = Calendar.getInstance();
        c.setTimeInMillis(System.currentTimeMillis());
        c.add(Calendar.SECOND, 300);
        long tempoReabrir = c.getTimeInMillis();
        AlarmManager reabrir = (AlarmManager) getSystemService(ALARM_SERVICE);
        reabrir.set(AlarmManager.RTC_WAKEUP, tempoReabrir, p);
        stopSelf();
    }


No caso, esse é agendado para abrir daqui a 5 minutos.

O intent EXECUTA, declarado no manifest:

       <receiver android:name=".Executa">
            <intent-filter>
                <action android:name="EXECUTA"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </receiver>


Chama o BroadcastReceiver que abre o service:

public class Executa extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Intent intenter = new Intent(context, NomeDoService.class);
        intenter.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startService(intenter);
    }
}


Procure entender essas partes que são cruciais para lidar som serviços. Bom estudos!

Grande abraço,

_________________
Gabriel Augusto Gomes
Desenvolvedor Java

ANDROID - JSE, JEE

SMARTPHONE: LG P350


17 Jul 2012, 16:33
Perfil
Hello Android
Hello Android

Data de registro: 29 Mai 2012, 15:14
Mensagens: 44
Mensagem Re: Problemas com Service
Ah, é sempre bom fechar o cursor também!

Abraço,

_________________
Gabriel Augusto Gomes
Desenvolvedor Java

ANDROID - JSE, JEE

SMARTPHONE: LG P350


17 Jul 2012, 16:38
Perfil
What is AVD?
What is AVD?

Data de registro: 10 Jul 2012, 14:54
Mensagens: 12
Mensagem Re: Problemas com Service
Obrigado gabrielaugustodm,

vou testar aqui se der certo eu posto ok.

valeu.


17 Jul 2012, 17:31
Perfil
Mostrar mensagens anteriores:  Organizar por  
Responder Tópico   [ 9 Mensagens ] 

Quem está online

Usuários vendo este fórum: ademilson, adenilsonsena, Aderbal Nunes, adilson, Adriano, agtavares, akaytatsu, alberto, albinoneto, Alex Marcelo Burnett, Alexandre de Queiroz, alexandrefett, alexandreufcg, alexcost2002, alineri, allart, allone, aluclinux, amos, andrewort, azero, b7web, bomcabelo, boydivalor, brenda, BTalhadas, Caique, carlos.macleod, cassiano, celson, cesschneider, cezaraf, Chanceler Supremo Finis Valorum, compto, criscmaia, cyzko, Daniel Batista, danilosv, dannieltec, deivisonrpg, difrene, diogeneskelsen, dkclan, dobau, du_sr, e-azuos, edsonel, Eduardo - Brasil, eduzortea, eliasmachado_rj, elisa, emersonbarros, estratecnologia, fcoroa, felipe.cintra, felipecomp19, ffabiano, flaviocc, Flávio Robertgo, francismarconcini, freak, frederico.affini, freina, FVB, gabrielpg, germanno, helder, heliopassos, henrique.garcia, HyagoRules, ice, IgorBrum, itsN, jacksonst, jacksonvpj, jcorreajr, joaquimfoto, johnnyjx, julianofischer, juliomar, jzaires, klassmann, Kureiton, Legiao, leo, lhdiassilva, linukiss, lucianno, Luna, mapis, marcelochiquinho, marcosandreao, Marini, marlovich, martins, Matheus562, miguel, mrangel, Mvitor, nandokanarski, neimarguerra, neviim, Nice, nsansilva, paulovaz, persiomotta, Petto, polonia, Princesa Léia Organa, Rafael Alencar, rafaelmonoh, ramonsa, raulcca, rfrafael, robsonrg, RodReis, rodrigo aguiar, rogeriopgomes, ROGÉRIO RODRIGUES, ruizsa, schiroky, sergio, Shinigami, Shmi Skywalker, SirBagda, Stormtrooper, Stryder, thiago@xbrain.com.br, thiagoalgo, thienne, Thitto, tiagocordeiro, tonical, Transtago, tricx16, vieira, vilmartr, viniciusgoncalves, wagner_francisco, waideman, weverton, Wookiees, zeantonio, zenden1503, zorba e 19 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 - 2014 Portal Android - Comunidade de Desenvolvedores da Plataforma Android

Estamos no Linkedin    Siga-nos no twitter


Powered by phpBB - Hospedado por Bemobi