首先,感谢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