我有一個正在播放音樂的服務。我實現了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