首先,感謝jameo對他的回答,聽起來不錯,但我不知道我是否有時間嘗試,我保證如果我可以在本週或下一次我有類似的問題。
最後我做的訣竅是這樣的:
1 - 創建方法onStopMediaPlayer一個接口(); //例如調用MediaPlayerStopInterface
public interface MediaPlayerStopInterface {
/**
* Called when the player timer ends
*/
public void onStopMediaPlayer();
}
2 - 我的活動類實現了界面切換圖像。
public class PortadaActivity extends Activity implements MediaPlayerStopInterface{
public void onStopMediaPlayer(){
//Switch images or whatever
}
}
3 - 我singletton類具有接口MediaPlayerStopInterface
public class AudioControllerClass { //The Singletton Java Class
private MediaPlayerStopInterface currentActivity;
public void setCurrentActivity(MediaPlayerStopInterface mpsi){
currentActivity=mpsi;
}
}
4的類型的對象 - 在我的onResume活動類()做一個Singlettonclass.setStoppedPlayerInterface(本),所以總是有一個運行活動的參考。
public class PortadaActivity extends Activity implements MediaPlayerStopInterface{
public void onResume() {
AudioControllerClass.getInstance(getApplicationContext()).setCurrentActivity(this); //In every resume the singletton class knows who was the last one in being active
}
}
5 - 當定時器執行,因爲我有活動中的類引用,只需要調用object_StoppedPlayerInterface.stoppedPlayer();
public class AudioControllerClass { //The Singletton Java Class
class TimerRadio extends TimerTask {
public void run() {
if(whatever==true){
currentActivity.onStopMediaPlayer();
}
}
}
}
最後,我沒有代碼,但回調onStopMediaplayer活動必須與處理程序來完成,如果你不希望有一個「只有UI線程可以觸摸他的看法」的異常:P
它完美的作品:)。但我不知道這是一個非常糟糕的做法還是不是很可怕xD
無論如何謝謝Jameo。你的聽起來更優雅:P
是的,這聽起來非常好,如果我有時間我會嘗試,但我必須在這幾天內解決一些大問題:( 但是,代碼聽起來像我期待的,但我做了其他方法 – Rako