YoKeyword / Fragmentation

[DEPRECATED] A powerful library that manage Fragment for Android
Apache License 2.0
9.72k stars 2.11k forks source link

消息队列管理为什么size==1才执行 ,如果>1 那么岂不是无法执行了? #1256

Open kahzix opened 3 years ago

kahzix commented 3 years ago

private void enqueueAction(Action action) { mQueue.add(action); if (mQueue.size() == 1) { handleAction(); }else{ Log.i(TAG,"mQueue.size != 1 : "+mQueue.size()); } }

In addition, we do not accept issues unrelated to Fragmentation.

javabean8 commented 3 years ago

在多线程的情况下,可能会出现,单线程不会

JantHsueh commented 3 years ago

因为一旦进入handleAction 就会一直从队列获取数据,直到为空, 不会出现多线程的问题,因为所有Action 都是发送到主线程中,进行入队的。 可参考我维护的版本 #1237 ,解决了一些问题,对难理解的地方进行了注释