我一直在尝试到处搜索这个问题,但我发现的所有问题都与高级别的问题有关,例如“如何知道正在单击哪个 HTML”。这不是我要找的东西。我正在寻找更底层的细节。
假设有人正在尝试为给定系统编写 GUI 库。另外,假设该程序员已经设法在屏幕上显示图形、文本、按钮等。现在,他们希望实现用户与该界面交互的方法,更具体地说,使用鼠标单击(或者可能是触摸输入)。
GUI 引擎运行的系统能够告诉他们何时发生点击,以及点击发生在屏幕上的哪个 (x, y) 点。要查找屏幕上的哪些元素被单击,一个简单的方法是循环遍历每个元素并测试每个元素。但这是现有 GUI 中通常的做法吗?例如,这是浏览器显示 HTML 页面时所做的事情吗?这就是操作系统对其 GUI 和窗口所做的事情吗?他们是否使用更复杂的数据结构(例如 R 树)?他们如何处理移动元素?
这个问题并不特定于任何软件,我只是想知道在 GUI 开发的背景下通常如何解决这个问题。
我正在尝试使用本机本地通知插件,但在更改通知的默认图标时遇到了麻烦。
到目前为止,我已经用两部手机来测试这个,两部安卓设备:第一部是奥利奥(8.1.0),另一部是牛轧糖(7.0)。我正在使用 Ionic CLI 4.5.0,并且我知道它的包装器与插件不兼容,如插件存储库中所述。
根据这个答案的建议,我已经为图标 URI 尝试了很多路径,但似乎没有任何效果。
在提供者中,这是代码的相关部分:
declare var cordova: any;
...
// inside a function that takes "id", "nome" and "tempo" as parameters:
cordova.plugins.notification.local.schedule({
id: id,
title: nome,
text: "Sua atividade agendada, \"" + nome + "\", está prestes a começar!",
at: new Date(tempo),
foreground: true,
icon: 'res://icone-notif.png',
smallIcon: 'res://icone-notif-24.png'
});
Run Code Online (Sandbox Code Playgroud)
在我的 config.xml 中,我添加了以下几行:
<platform name="android">
...
<resource-file src="resources/android/icon/icone-notif-24.png" target="res/icone-notif-24.png" />
<resource-file src="resources/android/icon/icone-notif.png" target="res/icone-notif.png" />
</platform>
Run Code Online (Sandbox Code Playgroud)
(我已经检查了每个文件,它们被正确放置在我项目的“res”文件夹中)
通知图标应该显示为我保存在这些文件夹中的图像,但我得到的只是默认的白色方块。
假设我在 Haskell 中有一个函数,它可能并不总是终止。如果计算时间太长,有没有办法让程序自行停止?
例子:
import qualified Data.Map as Map
walkmap :: Int -> Map.Map Int Int -> Int
walkmap x m = case Map.lookup x m of
Nothing -> x
Just y -> walkmap y m
main :: IO ()
main = do
let ma = Map.fromList [(0,1), (1,2)]
let mb = Map.fromList [(0,1), (1,0)]
print $ walkmap 0 ma
print $ walkmap 0 mb
Run Code Online (Sandbox Code Playgroud)
walkmap ma 0应该立即返回 2,但walkmap mb 0会永远循环。我知道无法确定该函数是否会停止,我想知道的是是否有办法为该计算设置时间限制(例如 10 秒)。
我使用的是 Spark 3.0,为了将用户定义的函数用作窗口函数,我需要一个UserDefinedAggregateFunction. 最初我认为使用 newAggregator和udaf可以解决这个问题(如此处所示),但udaf返回 a UserDefinedFunction,而不是 a UserDefinedAggregateFunction。
自 Spark 3.0 起,UserDefinedAggregateFunction已弃用,如此处所述(尽管仍然可以在周围找到它)
所以问题是:Spark 3.0 中是否有正确的(未弃用的)方法来定义适当的UserDefinedAggregateFunction并将其用作窗口函数?