问题标签 [runloop]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - Runloop总是导致XPC连接中断?
嗨,我注意到如果我在应用程序进入后台时添加 runloop 会导致 XPC 连接中断
例如,我的应用程序连接到 BLE 设备,如果用户让应用程序进入后台一段时间,我将退出应用程序而不是释放连接
这是我的代码
但是每次我进入前台时,我发现如果我删除了runloop
该应用程序将运行
但是如果我添加 Runloop ,它会导致
XPC 连接中断
我不明白 Runloop 和应用程序生命周期之间有什么关系???
另外,如果我让应用程序进入后台足够的时间,应用程序将退出,然后再次打开应用程序一切都很好。
****** 更新 ******
这是我使用的最终代码,它工作正常并且没有崩溃但不确定是因为我修改了我的项目设置......很久以前这是一个问题
ios11 - iOS 11 - iOSDeviceManager 无法在设备上安装 DeviceAgent
在 iOS 11 设备上,测试执行会在 2-3 小时后停止。相同的设置适用于 iOS 10 设备。正在使用的宝石 - run_loop - 2.6.1/2.6.0/2.5.4 葫芦黄瓜 - 0.21.1/0.20.5 黄瓜 - 3.0.0.pre.2 Xcode - 9 iOS - 11.0/11.0.1/11.0。 2
以下是错误消息 -
无法安装 /Users/raenug001c/.rvm/gems/ruby-2.3.1@ios11test/gems/run_loop-2.6.1/lib/run_loop/device_agent/ipa/DeviceAgent-Runner.app。iOSDeviceManager 说:
只有重新启动设备后,才能进一步执行测试。
进一步调试问题后,iOSDeviceManager 似乎无法在设备上安装/启动设备代理应用程序。无法查看 iOSDeviceManager 的源代码,因此无法进一步调试。
ios - iOS 在系统空闲时定期执行低优先级任务
在 iOS App 开发过程中。我想定期执行低优先级任务。并且不希望这个任务会影响到主要的工作计划。实现它的方法是什么?
现在我用timer
来执行周期性任务,但经常发现 App 不流畅。
低优先级任务有时需要在主线程上运行,例如检查粘贴板而不是在 UI 上显示内容。
ios - UndoManager 运行循环分组在不同的线程上下文中会受到怎样的影响?
TLDR:我想知道UndoManager
从后台线程使用时基于运行循环的自动撤消分组是如何影响的,我最好的选择是什么。
我在一个自定义 Swift 框架中使用UndoManager
(以前NSUndoManager
),目标是 iOS 和 macOS。
在该框架内,大量的工作发生在后台 GCD 串行队列上。我知道UndoManager
每个运行循环周期会自动对顶级注册的撤消操作进行分组,但我不确定不同的线程情况会如何影响它。
我的问题:
- 如果有的话,以下情况会对
UndoManager
注册的撤消操作的运行循环分组有什么影响? - 假设所有需要撤消注册的更改都将发生在单个后台串行调度队列上,哪种情况(除了情况 1,这是不可行的)最适合提供自然分组?
在以下所有情况下,假设methodCausingUndoRegistration()
并anotherMethodCausingUndoRegistration()
没有什么花哨的,并UndoManager.registerUndo
从调用它们的线程调用而无需任何调度。
情况一:主线程内联
我的理解:这就是UndoManager
期望的使用方式。上面的两个撤销注册都将发生在同一个运行循环周期中,因此被放置在同一个撤销组中。
情况2:主线程同步调度
我的理解:显然,我不想在生产中使用这段代码,因为在大多数情况下同步调度不是一个好主意。但是,我怀疑这两个操作有可能根据时序考虑被放入单独的运行循环周期中。
情况 3:主线程上的异步调度
我的理解:尽管我希望它产生与情况 1 相同的效果,但我怀疑这可能会导致与情况 2类似的未定义分组。
情况 4:后台线程上的单个异步调度
我的理解:我真的希望这将与情况 1一样,只要UndoManager
仅从同一后台队列中使用。但是,我担心可能有一些因素导致分组未定义,特别是因为我不认为 GCD 队列(或其托管线程)总是(如果有的话)获得运行循环。
ios - 我的平移手势回调函数中的计时器从不触发
我试图仅在用户开始平移 0.3 秒时才显示按钮,以避免在某些情况下立即显示按钮(例如,如果手指没有一起抬起,则在缩放结束时)。为此,我在平移手势处于.began
状态时启动 Timer,然后.changed
仅在 timer 变为 nil 时才显示处于状态的按钮。
但是,直到我抬起手指(即手势是.ended
),我的计时器才开始运行。我认为这可能与运行循环和手势占用主线程有关?任何解决方法将不胜感激。谢谢!
python - 如何注册一个 SIGINT 处理程序,该处理程序将在按下 Ctrl+C 后立即运行?
我正在编写一个使用 AppKit 的 PyObjC 绑定的 Python 脚本。该脚本使用 shared 注册一个观察者,然后调用NSWorkspace
AppKit.CFRunLoopRun notificationCenter
() 以便处理通知:
我遇到的问题(可通过上述 MCVE 重现)是,当我在运行脚本的终端窗口上按 Ctrl+C 时,handle_interrupt() 不会立即执行,而是在下次NSWorkspaceDidActivateApplicationNotification
处理通知时执行。
我如何在 Ctrl+C / SIGINT 发生时立即响应?
swift - Swift RunLoop 阻止表格视图
所以,我有一个计时器,它每 0.1 秒在我的应用程序委托中将一个变量增加一个。在我的 tableViewController 中,我将这个数字显示在一个单元格中。在控制器中有另一个计时器,它重新加载可见单元格。一切正常,除了一旦滚动 tableView,数字停止变化,直到 table view 没有被释放。我已经读到解决这个问题的方法是:
tableTimer
我的手机重新加载计时器在哪里。尽管如此,这是可行的,但是一旦滚动浏览视图,它就会变得非常滞后,并且像往常一样是 0% 的流动性。有什么修复吗?谢谢。
编辑:
创建计时器:
更新表格视图:
android - 如果我在我的应用更新 (android) 中关闭 setPersistenceEnabled,Firebase 会从缓存数据中读取吗
设想
我已经在 Play Store 上发布了我的应用程序,它使用
- Firebase 实时数据库
- 为我的每个 Firebase 数据库设置了 setPersistenceEnabled(true)。
在跟踪崩溃几周后,我遇到了这个崩溃。
经过一番研究,我得出结论,Firebase 数据库的数据持久性缓存的数据不一致可能是导致此崩溃的原因。
FirebaseDatabase.getInstance().setPersistenceEnabled(false);
所以我通过调用我所有的数据库来关闭数据持久性。
通过上述代码更改,我在 Play Store 上发布了我的应用程序的更新。
但是用户(在禁用持久性的新版本上)仍然会崩溃。
所以我的查询是
1) 即使关闭持久性,应用程序是否仍会使用持久化数据?
2)用户是否需要清除应用程序数据才能消除崩溃?(因为不一致/损坏的缓存数据是崩溃的原因)
以下是我的应用程序中与 firebase 数据库相关的 gradle 依赖项
ios - 当调用 popToRootViewController 并设置 tabBarController selectedIndex 时,弹出的 VC 没有在同一个运行循环中调用 viewDidDisappear
我有一个根标签栏 vc 和导航 vc,其中一个 home vc 在标签栏索引 0 中,另一个 vc 在标签栏索引 1 中;
现在我推送到一个 subvc,这个 subvc 显示在 homevc 上面
然后我触发了使用按钮弹出这个 subvc 并使用返回到 homevcpopToRootViewController
然后立即转到索引 1 vc。
现在的问题是,如果我在 pop 到 root 后没有转到索引 1 vc,那么 subvc 将被弹出并且它viewDidDisappear
会像往常一样被调用,但是,如果我在 pop 后转到 root tabbar 的索引 1 或其他索引对于 root,subvc 在弹出时不会调用viewDidDisappear
。
我知道我的描述令人困惑,所以这里是代码:
如您所见,区别仅self.selectedIndex = 1;
在于导致viewDidDisappear
无法调用我的 subVC。
但我得到如下解决方案:
那么谁能解释其背后的根本原因呢?
runloop - performSelector:onThread 使 runloop 退出
在此处输入图像描述 performSelector:onThread 使运行循环退出?我尝试观察运行循环,当我触摸时,运行循环在完成句柄 performSelector:onThread 后退出,计时器停止工作。我无法理解