我在按下后出现一个对话框,但是当它显示时,我希望将活动设置为暂停、播放动画、倒数计时器等。
是否有一种简单的方法可以暂停整个活动,而无需暂停每个动画/计时器等?
root@xxx:/# apt install zabbix-get
root@xxx:/# zabbix_get --version
zabbix_get (Zabbix) 4.4.10
root@xxx:/# zabbix_get -s 127.0.0.1 -k agent.version
4.4.7
谢谢!
答案 0 :(得分:0)
否,因为有很多线程(UI 线程、您的计时器线程)。所以这是一个非常糟糕的方法,可能很难做到。
你应该怎么做?
保留由全局变量运行的所有计时器、动画和线程的引用。创建一个方法 pauseAll() 来暂停所有这些,另一个 resumeAll() 来恢复所有这些。显示对话框时调用 pauseAll() 方法,当用户取消对话框时调用 resumeAll()。
答案 1 :(得分:0)
您可以实施 ViewModel 方法。
public class SharedTimerViewModel extends ViewModel{
private TimerController timerController;
public void setTimerController(TimeController timerController){
this.timerController = timerController;
}
public TimerController getTimerController(){
if(timerController != null){
return timerController;
}
return new TimeController(){}
}
}
public interface TimeController{
default void control(Boolean on){}
}
public class MyActivty extends Activity implements TimerController {
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
SharedTimerViewModel model = new ViewModelProvider(this).get(SharedTimerViewModel.class);
model.setTimerController(this);
// do things
}
public void control(Boolean on){
if(on){
//start timers
}else{
//stop timers
}
}
}
现在在 Activity 的任何 Android Lifecycle 子对象中,即您可以调用的 Fragments 和 Dialogs
SharedTimerViewModel model = new ViewModelProvider(this).get(SharedTimerViewModel.class);
model.getTimerController.control(false)//stopx timers
model.getTimerController.control(true)//start timers