我正在尝试使用RxJava在加载某些方法时显示AlertDialog.它不起作用,UI被阻塞2秒,当使用DeBUGger单步执行时,调试器显示它在UI线程上运行.我已经添加了Schedulers.IO,那么我做错了什么?
boolean initialize() { try { Thread.sleep(2000); } catch (InterruptedException e) { } return true;}public AlertDialog showSomePopup(Context context, String msg) { return new AlertDialog.Builder(context) .setTitle("Loading...") .setMessage(msg) .setPositivebutton("Ok", null) .show();}@OverrIDeprotected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); final AlertDialog dialog = showSomePopup(this, "Waiting .."); Single.just(initialize()) .subscribeOn(Schedulers.io()) .observeOn(AndroIDSchedulers.mainThread()) .subscribe(new Consumer<Boolean>() { @OverrIDe public voID accept(@NonNull Boolean aBoolean) throws Exception { dialog.dismiss(); } });}
解决方法:
问题是.subscribe()没有被调用,直到initialize()方法没有发出(即你正在使用.just(),直到initialize()没有返回.
总结以上是内存溢出为你收集整理的android – RxJava在相同的阻塞UI线程上运行,并且不显示AlertDialog全部内容,希望文章能够帮你解决android – RxJava在相同的阻塞UI线程上运行,并且不显示AlertDialog所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)