2016-03-30 14 views
0

私はサービスでArraylistを更新しているバックグラウンドサービスに取り組んでいます。Arraylistからインデックスを取得して曲を演奏しています。サービス接続がonResumeで呼び出されないのはなぜですか?

私は別のアクティビティを意図し、そのアクティビティの中で私はArraylistをサービスに更新していますが、私がアクティビティを終了してMainActivityに戻ったときに再びArraylistを更新していないのです。

私は、データを格納するために領域の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はレルムアラレイリストです。 MainActivity.java

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

Albums.java

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

だから、両方の活動にArrayListのサイズが異なることになり、サイズごとのように、サービスを更新する必要があります。

アクティビティが完了したときに、なぜそれが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

あなたはあなたのメソッドを変更しましたか?私はそれをチェックアウトしたそれを変更しました – Jois

+0

はい、私はそのメソッドを呼び出す午前super.onResumeの前にonResumeを更新しました – animation123

関連する問題