2016-03-30 2 views
0

Я работаю над фоновым сервисом, где я обновляю один Arraylist в службе, из Arraylist я получаю индекс и играю песни.Почему сервисное соединение не вызывается в onResume?

Так что теперь проблема в том, что если я намерен на другую деятельность и внутри этой деятельности, я обновляю Arraylist до службы, но когда я заканчиваю деятельность и возвращаюсь в MainActivity, это не обновляет Arraylist.

Я использую realm arraylist для хранения данных.

@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; 
     } 
    }; 
} 

Здесь musicRealmResults - это Realm Arraylist.

В Albums.java

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

В MainActivity.java

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

Так как в деятельности Список_массивов размер будет отличаться и согласно размеру он должен обновить до службы.

Так что, пожалуйста, скажите, почему он не обновляется в onResume, когда завершается работа.

Пожалуйста, пройдите через мое сообщение и предложите мне какое-нибудь решение.

+0

Вы не зашли на сайт в SongConnection() – Jois

+0

Предоставьте еще несколько кодов. Где вы начинаете/инициализируете свой сервис? –

+0

musicSrv.setList (musicRealmResults); откуда берутся musicRealmResults? Обновляется ли он, когда вы возвращаетесь к своей предыдущей деятельности? –

ответ

1

изменить код так:

@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); 
    } 

} 

теперь ваш ваш сервис, когда будет правильно называется Но убедитесь, что вы остановите службу в какой-то момент времени перед этим»снова начал s. Спасибо, надеюсь, это было полезно.

+0

эй спасибо, но все равно то же самое, что он не обновляет musicRealmResults по-прежнему более старого размера, который он принимает, он должен обновить размер сервиса. – animation123

+0

Вы изменили вас на метод Resume также ?? я изменил это проверить это – Jois

+0

да, я обновил onResume до super.onResume только я звоню, что метод – animation123

Смежные вопросы