我有一个正在播放音乐的服务。我已经实现了像这样的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完成之前就被调用了,所以我想在这个可运行的中调用super.onDestroy(),但是是如何调用的
发布于 2012-02-09 09:37:48
在onDestroy()中这样做并不是最好的主意,因为这个方法应该进行清理。我建议你做以下几点:
创建一个像void fadeOutAndStop().
stopSelf() (或者您现在使用的停止服务的方法)。这样,您甚至不需要在onDestroy()中做任何特别的事情,而且设计将更加干净。
发布于 2012-02-09 09:56:12
正确的语法应该是YourServiceClassName.super.onDestroy(),但正如马尔科姆指出的那样,这不是一个好主意。
https://stackoverflow.com/questions/9208267
复制相似问题