gpt4 book ai didi

android - 双击 onBack 的 Rxjava 以完成 Activity

转载 作者:行者123 更新时间:2023-11-29 16:35:50 25 4
gpt4 key购买 nike

我想实现一种 rxjava 的 onback 双击方式

所以,我指的是this answer因为它看起来合理但不起作用它显示 toast 并退出

我观察双背的代码实现是:

private static final long EXIT_TIMEOUT = 2000;
private CompositeDisposable compositeDisposable = new CompositeDisposable();
private PublishSubject<Boolean> backButtonClickSource = PublishSubject.create();

@NonNull
private Disposable observeBackButton() {
return backButtonClickSource
.debounce(100, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.doOnNext(__ -> ToastUtils.showShort(R.string.back_more_toast_message))
.timeInterval(TimeUnit.MILLISECONDS)
.skip(1)
.filter(interval -> interval.time() < EXIT_TIMEOUT)
.subscribe(__ -> model.finishActivity());

}

对于onBackPressed:

   public void onBackPressed() {
backButtonClickSource.onNext(true);
}

最佳答案

OP 的问题是他的 onBackPressed() 方法是这样的:

@Override
public void onBackPressed() {
super.onBackPressed();
backButtonClickSource.onNext(true);
}

因此,诀窍是删除 super.onBackPressed() 以便您可以根据需要调整该操作。

我已经创建了一个示例,它对我有用,我刚刚删除了你的模型内容和你的 Toast 方法,这是它的样子:

public class MainActivity extends AppCompatActivity {

private static final long EXIT_TIMEOUT = 2000;
private PublishSubject<Boolean> backButtonClickSource = PublishSubject.create();


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
observeBackButton();
}

@NonNull
private Disposable observeBackButton() {
return backButtonClickSource
.debounce(100, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.doOnNext(__ -> Toast.makeText(this, "Press once again to exit", Toast.LENGTH_SHORT).show())
.timeInterval(TimeUnit.MILLISECONDS)
.skip(1)
.filter(interval -> interval.time() < EXIT_TIMEOUT)
.subscribe(__ -> MainActivity.this.finish());
}

@Override
public void onBackPressed() {
backButtonClickSource.onNext(true);
}
}

关于android - 双击 onBack 的 Rxjava 以完成 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52358147/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com