我有一个播放音乐的服务。我已经实现了fade out 这样的:
@Override
public void onDestroy(){
volume=1.0f;
fade_handler.post(fade_out);
super.onDestroy();
}
这是 fade_out Runnable :
private Runnable fade_out = new Runnable(){
public void run(){
player.setVolume(volume, volume);
if(volume>0.0f){
volume-=0.05f;
fade_handler.postDelayed(fade_out, 200);
}
else{
player.stop();
player.release();
stopForeground(true);
//here should be super.onDestroy()!!!!!!!
}
}
};
问题是现在 super.onDestroy()在 fade_out 结束之前调用了 - 所以我想在这个runnable中调用super.onDestroy() - 但是如何?
答案 0 :(得分:2)
在onDestroy()
中执行此类操作并不是最好的主意,因为此方法应该进行清理。我建议你做以下事情:
void fadeOutAndStop()
。stopSelf()
(或者您现在用来停止服务的方法)。fadeOutAndStop()
方法。这样你甚至不需要在onDestroy()
中做任何特别的事情,设计会更清晰。
答案 1 :(得分:1)
正确的语法是YourServiceClassName.super.onDestroy(),但正如Malcolm指出的那样,这不是一个好主意。