我需要在java中删除一个类的实例,这样我就可以创建一个新实例。在我继续之前必须销毁先前的实例。我意识到Java没有提供隐式删除,并且我一直在尝试使用弱引用的技巧强制垃圾收集来摆脱它。
这是我的代码:
private static void gc() {
Object obj = new Object();
WeakReference ref = new WeakReference<Object>(obj);
obj = null;
while(ref.get() != null) {
System.gc();
}
}
private void setTrack(String path){
MediaHub current;
if(!isPlaying){
current = new MediaHub(title,album,titles,titlePlace,play,next,previous,volume,progress,songTitle,thisInstance,getBaseContext(),path);
} else {
current = null;
gc();
isPlaying = false;
setTrack(path);
}
}
MediaHub
是我试图删除一个实例并创建一个新实例的对象。 isPlaying
是一个布尔实例变量,在类的顶部定义为false。据推测,方法gc()
应强制进行垃圾收集。
到目前为止,我没有成功(希望显而易见的原因)。那么,如何删除MediaHub
的实例?
答案 0 :(得分:7)
那么,如何删除MediaHub的实例?
你没有。
我需要删除它的原因是因为在MediaHub中使用了一个Android MediaPlayer,当我需要切换歌曲时,我最终会互相播放两首歌曲。
然后你在MediaHub
上编写一个方法,例如switchSongs()
,在MediaPlayer
上调用stop()
当前歌曲和prepare()
上的相应方法(prepareAsync()
(或{{1}})下一首歌。