2017-02-14 5 views
0

Мне нужно создать приложение для Android, которое дает уведомление при получении нового сообщения, даже если приложение не работает. Я использую базу данных firebase. Я написал код для firebase datasnapshot, но он работает только при работе приложения. Мне нужно запустить этот код, если приложение не работает.Создайте бесконечное фоновое обслуживание для уведомления

 Mref=new Firebase("https://iyutue-30s49.firebaseio.com/"); 
    Mref.addChildEventListener(new ChildEventListener() { 
     @Override 
     public void onChildAdded(DataSnapshot dataSnapshot, String s) { 

      String value=dataSnapshot.getValue(String.class); 
      myDb.GetAllData(); 
      String idd= String.valueOf(myDb.id); 
      if (value.equals(idd)==true){ 
       NotificationCompat.Builder builder=new NotificationCompat.Builder(getApplicationContext()); 
       builder.setSmallIcon(R.drawable.ic_tab_profile); 
       builder.setContentTitle("plaese").setContentText("jijo"); 
       Intent intent =new Intent(getApplicationContext(),MainActivity.class); 
       TaskStackBuilder stackBuilder=TaskStackBuilder.create(getApplicationContext()); 
       stackBuilder.addParentStack(MainActivity.this); 
       stackBuilder.addNextIntent(intent); 
       PendingIntent pendingIntent=stackBuilder.getPendingIntent(0,PendingIntent.FLAG_UPDATE_CURRENT); 
       builder.setContentIntent(pendingIntent); 
       NotificationManager NM=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); 
       NM.notify(0,builder.build()); 
      } 
     } 

     @Override 
     public void onChildChanged(DataSnapshot dataSnapshot, String s) { 

     } 

     @Override 
     public void onChildRemoved(DataSnapshot dataSnapshot) { 

     } 

     @Override 
     public void onChildMoved(DataSnapshot dataSnapshot, String s) { 

     } 

     @Override 
     public void onCancelled(FirebaseError firebaseError) { 

     } 
    }); 

мне нужно выполнить этот код в фоновом режиме, когда приложение не работает также, пожалуйста, помогите мне спасибо advnace

+2

Сохранение соединения в открытом состоянии, когда приложение неактивно, приведет к серьезному истощению батареи и повредит пользовательский интерфейс. Вместо этого рекомендуется использовать Firebase Cloud Messaging для уведомления о событиях пользователя, когда у них нет приложения. –

+0

@FrankvanPuffelen, но здесь я использую firebase, но этот код не работает, если приложение неактивно, как писать этот тип сервиса заблаговременно –

+0

, но другие основные приложения, такие как whatzaap, также запускают фоновый процесс и обслуживание всегда .. это не лучший способ? –

ответ

1

Этот фрагмент кода должен быть обернут внутри Android компонента будет выполняться. Это действительно зависит от вашего триггера. Если это то, что вы хотите сделать в фоновом режиме, то лучше всего использовать service или broadcastreciever. Как я уже упоминал, это действительно зависит от триггера.

Для примера, у вас есть приложение, которое должно показать тост при обнаружении нового SMS. В таком случае вам необходимо зарегистрироваться для трансляции, и система вызывает приемник вещания при поступлении SMS-сообщения. В приемнике вы можете поместить свою собственную логику (например, показать тост).

+0

, пожалуйста, предоставьте мне предложения для моего случая заблаговременно –

+0

Какова ваша точка запуска? Когда вы хотите запустить код? Очевидно, я надеюсь, что вы не хотите запускать этот код непрерывно в цикле или что-то. – Dibzmania

+0

Мне нужно запустить этот код, когда новые данные вставляются в firebase для получения уведомлений, даже если приложение не активно и заранее заблаговременно –