我可以在Service类中使用setters / getters类吗?

时间:2019-06-27 15:53:59

标签: java android service

我有一个服务类来控制媒体播放,但是我想知道在我的Service中使用单独的getters / setters类是否不好。

在显示我所有歌曲的片段中,当我单击一首歌曲时,我将调用setter方法setSongIndex(); setSongList();

然后在我的服务类中,我在playSong()方法中调用getter方法:

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 :(得分:0)

您一行回答

It depends on your situation 

但是在存储库或数据访问对象类中理想地使用访问器(也称为获取器和设置器)。

您可以了解有关此on this link

的更多信息