我如何 wait() 等待 snackbar onDismissed 进程完成?

How do I wait() for the snackbar onDismissed process to finish?

我想在 snackbar onDismissed 完成后启动一个进程。

if (snackbar != null){
                    snackbar.dismiss();
                    finish();
                } else {
                    finish();
                }

由于 snackbar onDismissed 是异步的,activity 将在 onDismissed 任务完成之前完成。

snackbar.addCallback(new Snackbar.Callback() {

            @Override
            public void onDismissed(Snackbar snackbar, int event) {
                if (event != DISMISS_EVENT_ACTION) {
                    // Some work to be done.
            }

我知道我可以在 onDismissed 中调用 finish(),但还有其他操作会导致小吃店关闭,我不希望它们完成 activity。 有没有办法在继续代码之前等待 snackbar 进程完成?

查看 Snackbar 的 Android 文档。您可以使用 DISMISS_EVENT_MANUAL 来表示来自 dismiss() 调用的小吃店的关闭。

snackbar.addCallback(new Snackbar.Callback() {

        @Override
        public void onDismissed(Snackbar snackbar, int event) {
            if (event == DISMISS_EVENT_MANUAL) {
                // Some work to be done.
                activity.finish()
            }
        }

另一种选择是扩展 Snackbar.Callback()。像

class MyCallback extends Snackbar.Callback {
      Runnable run;
      @Override
      public void onDismissed(...) {
           // Do something
           if (run) run.run();
      }
}
BaseCallback<Snackbar> callback = new MyCallback();
snackbar.addCallback(callback);

然后在你想结束时执行此操作。

if (snackbar != null){
    callback.run = new Runnable() {
         void run() {
             finish();
         }
    };
    snackbar.dismiss();
} else {
    finish();
}