如何在对话框打开时暂停活动?

时间:2021-05-26 17:55:12

标签: java android

我在按下后出现一个对话框,但是当它显示时,我希望将活动设置为暂停、播放动画、倒数计时器等。

是否有一种简单的方法可以暂停整个活动,而无需暂停每个动画/计时器等?

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

谢谢!

2 个答案:

答案 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
相关问题