我有一个正在播放音乐的服务。我实现了fade out这样:Android:调用服务的super.onDestroy()外onDestroy()
@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()里面这个runnable - 但如何?
谢谢,这确实似乎是一个更好的解决方案。有一件事 - 我怎么从我的活动中调用这个函数?使用[AIDL](http://developer.android.com/guide/developing/tools/aidl.html)?我之前所做的只是stopService(intent)。 – 2012-02-09 09:48:37
我想我找到了答案。我需要绑定该服务。 – 2012-02-09 09:58:05
@PrimožKralj不,不,AIDL是一种矫枉过正。除非您正在进行一些进程间通信或多线程,否则您只需要[Binder](http://developer.android.com/guide/topics/fundamentals/bound-services.html#Binder)。 – Malcolm 2012-02-09 10:00:20