2016-03-30 36 views
0

Hizmette bir Arraylist'i güncellediğim arka plan servisi üzerinde çalışıyorum, Arraylist'ten indeksi alıyorum ve şarkıları çalıyorum.Neden Service Connection onResume'de çağrılmıyor?

Şimdi sorun şu: Başka bir etkinlik için niyetim varsa ve bu etkinlik içinde Arraylist'i hizmete güncelliyorum, ancak etkinliği bitirdiğimde ve Ana Verimliliğe geri döndüğümde Arraylist'i tekrar güncelleştirmiyor.

Verileri depolamak için realm arraylist kullanıyorum.

@Override 
protected void onStart() { 
    super.onStart(); 
    songConnection(); 

    if (playIntent == null) { 
     playIntent = new Intent(this, MusicService.class); 
     bindService(playIntent, musicServiceConn, Context.BIND_AUTO_CREATE); 
     startService(playIntent); 
    } 
} 

@Override 
protected void onResume() { 
    super.onResume(); 
    songConnection(); 
} 

public void songConnection() { 
    musicServiceConn = new ServiceConnection() { 
     @Override 
     public void onServiceConnected(ComponentName name, IBinder service) { 
      MusicService.MusicBinder binder = (MusicService.MusicBinder) service; 
      musicSrv = binder.getService(); 
      musicSrv.setList(musicRealmResults); 
      musicBound = true; 
     } 

     @Override 
     public void onServiceDisconnected(ComponentName name) { 
      musicBound = false; 
     } 
    }; 
} 

İşte müzikRealmResults, Realm Arraylist'tir.

musicRealmResults = realm.where(Music.class).findAll(); 

MainActivity.java

yılında Albums.java

musicRealmResults = realm.where(Music.class).equalTo("albums", albums).findAllSorted("albums", Sort.ASCENDING); 

yılında

Yani hem aktivitesinde Arraylist boyutu farklı olacaktır ve boyuta göre, Hizmet güncellemek gerekir.

Lütfen, etkinlik sona erdiğinde neden onResume'de güncellenmediğini söyleyin.

Lütfen yazıyı gözden geçirin ve bana bir çözüm öner. Böyle

+0

Hizmetinizi hiç başlatmıyorsunuz SongConnection() – Jois

+0

Daha fazla kod sağlayın. Hizmetinizi başlatıyor/başlatıyorsunuz? –

+0

musicSrv.setList (musicRealmResults); musicRealmResults nereden geliyor? Önceki etkinliğinize geri döndüğünüzde güncelleniyor mu? –

cevap

1

değişikliğin kodu: doğru denilen Ama bundan önce zamanın bir noktada hizmeti durdurmak emin olun

@Override 
protected void onStart() { 

    songConnection();// call this method before calling super 

super.onResume(); 
} 

public void songConnection() { 
    musicServiceConn = new ServiceConnection() { 
     @Override 
     public void onServiceConnected(ComponentName name, IBinder service) { 
      MusicService.MusicBinder binder = (MusicService.MusicBinder) service; 
      musicSrv = binder.getService(); 
      musicSrv.setList(musicRealmResults); 
      musicBound = true; 
     } 

     @Override 
     public void onServiceDisconnected(ComponentName name) { 
      musicBound = false; 
     } 
    }; 
if (playIntent == null) { 
     playIntent = new Intent(this, MusicService.class); 
     bindService(playIntent, musicServiceConn, Context.BIND_AUTO_CREATE); 
     startService(playIntent); 
    } 

} 

şimdi senin senin hizmet' ler tekrar başladı. TeşekkürlerBu yardımcı oldu umarım.

+0

hey teşekkürler ama yine de hala bu eski değil, daha büyük bir boyutta musicRealmResults güncelleme değil, hizmet boyutu güncellemek gerekir. – animation123

+0

da sizi ResResume yönteminde değiştirdiniz mi? – Jois

+0

evet ben kontrol etmeliyim Evet on.Resimden önce güncelledim super.onResume sadece ben bu yöntemi arıyorum – animation123