我有一系列的runnables依赖于一些if语句一个接一个地运行。我已经尝试了大约一个月来弄清楚如何暂停和恢复runnables,具体取决于当前正在运行的那个。我无法让它发挥作用。
这是我目前用于暂停方法的内容。在每个runnable的开头,我将一个String放入SharedPreferences,它告诉我当前在哪个runnable。然后我使用该String恢复此暂停方法中的当前runnable。它只是不起作用。它会暂停,但是当我恢复时,它会跳到可运行的不同部分,或者一起跳过不同的可运行部分;或者只是跳到runnables的末尾。有时它会冻结并且不会崩溃,但是什么也不做。
public void Pause(View view){
if (soundsOn == true){
mplayerButtonClick.start();
}
if(resume == true) {
handler.removeCallbacks(r);
handler.removeCallbacks(r2);
handler.removeCallbacks(r3);
handler.removeCallbacks(rest);
handler.removeCallbacks(switching);
pauseButton.setText("Resume");
resume = false;
}else{
place = preferences.getString("place", "r");
progress();
if(place.equals("r")) {
handler.postDelayed(r, 3000);
}
if(place.equals("r2")) {
handler.postDelayed(r2, 3000);
}
if(place.equals("r3")) {
handler.postDelayed(r3, 3000);
}
if(place.equals("rest")) {
handler.postDelayed(rest, 3000);
}
if(place.equals("switching")) {
handler.postDelayed(switching, 3000);
}
pauseButton.setText("Pause");
resume = true;
}
}
** progress()指的是恢复进度条。
任何帮助都会非常感激。这让我疯狂了这么久!提前感谢您的任何建议!! :)