У меня есть класс обслуживания, который управляет моим воспроизведением мультимедиа, но мне было интересно, было ли использование отдельного класса getters / setters в моей службе некорректно.
В моем фрагменте, который отображает все мои песни, когда я нажимаюпесню, которую я называю методами setter setSongIndex(); setSongList();
.
Затем в моем классе обслуживания я вызываю методы getter в моем методе playSong ():
songList = Song.getSongList();
songIndex = Song.getSongIndex();
Ипри нажатии на следующую / предыдущую песню я снова вызываю методы setter для замены songIndex.
Теперь я не уверен, что в конечном итоге мое приложение рухнет, я думаю, потому что, когда я смахиваю мое приложение с последнего, оноуничтожит все классы, кроме моего Сервиса, который работает в фоновом режиме.
Так что вызовы моих методов Getters / setters не будут приниматься, потому что мое приложение убито, и только сервис все еще работает.
Странно то, что мое приложение работает отлично, и я убил его из списка недавних приложений и все еще могу вызывать следующую / предыдущую песню из уведомления, вызывающего сеттеры / геттеры?
Класс получения / установки
public static void setSongIndex(int index){
songIndex = index;
}
public static void setSongList(ArrayList<Song> songs){
songList = songs;
}
public static ArrayList<Song> getSongList(){
return songList;
}
public static int getSongIndex(){
return songIndex;
}
Класс обслуживания
private void nextSong(){
if (songIndex == songList.size() - 1) {
songIndex = 0;
Song.setSongIndex(songIndex);
activeSong = songList.get(songIndex);
}else{
++songIndex;
Song.setSongIndex(songIndex);
activeSong = songList.get(songIndex);
Toast.makeText(getApplicationContext(), "You Clicked position: " + songIndex + " " + songList.get(songIndex).getData(), Toast.LENGTH_SHORT).show();
}
stopSong();
playSong();
//Send broadcast update song info
Intent UpdateSongBroadCastReceiver = new Intent(Constants.ACTIONS.BROADCAST_UPDATE_SONG);
sendBroadcast(UpdateSongBroadCastReceiver);
}
private void playSong(){
songList = Song.getSongList();
songIndex = Song.getSongIndex();
Log.i(TAG,"songList: " + songList);
activeSong = songList.get(songIndex);
mediaPlayer.reset();
try {
mediaPlayer.setDataSource(activeSong.getData());
mediaPlayer.prepare();
mediaPlayer.start();
} catch (Exception e) {
Log.e(TAG, "ERROR SETTING DATA SOURCE", e);
Main.unbindService(getApplicationContext());
stopSelf();
}
NotificationBuilder(PlaybackStatus.PLAYING);
}