我在Mac上有一个工具,该工具具有数据处理界面,Web界面和UI。这三个接口在三个不同的串行(异步)dispatch_queues上运行。(UI在主队列上运行)
当Web界面接收到“停止”命令时,我的数据处理界面需要停止。数据处理dispatch_block没有任何依赖关系,只是它需要从Web界面侦听Stop命令。
我对应该如何设计数据块感到困惑,因此,我不必轮询Web界面来检查它是否收到了Stop命令。 我的数据块的堆栈非常深(很多函数调用),并且我不想在是否已调用Stop的情况下检入每个函数。 目的是在收到 Stop 命令后尽快停止。
我不能依靠isCancelled
的{{1}}方法,因为我的数据块一直在运行,直到收到Stop。
我的目的不是要如何更好地设计接口,而是要在收到 Stop 命令时快速退出数据块。
我确实知道这是一个古老的问题,即如何始终避免检查变量。只是想知道是否有可以做的事情。
欢迎提出所有建议。
答案 0 :(得分:4)
您不能仅仅杀死数据处理块。这将导致内存泄漏和不稳定状态。 NSNSOperation的<android.support.v4.widget.DrawerLayout
android:id="@+id/drawer_layout"
android:layout_width="320dp"
android:layout_height="match_parent">
方法是最好的方法。 Stop命令应设置一个数据处理块本地的变量,并在该块内部检查方便的位置并在设置该变量时清除并退出该变量。