Могу ли я использовать класс setters / getters в классе Service? - PullRequest
1 голос
/ 27 июня 2019

У меня есть класс обслуживания, который управляет моим воспроизведением мультимедиа, но мне было интересно, было ли использование отдельного класса 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);
}

1 Ответ

0 голосов
/ 27 июня 2019

вы отвечаете в одной строке

It depends on your situation 

, но Идеально использовать аксессоры (также известные как геттеры и сеттеры) в классе репозитория или объекта доступа к данным.

вы можете прочитать больше об этом по этой ссылке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...