gpt4 book ai didi

java - 在 Android 中接收用户输入然后继续执行的正确方法

转载 作者:行者123 更新时间:2023-11-30 10:35:58 25 4
gpt4 key购买 nike

我正在 Android 中为一种相当简单的 Pascal/BASIC 类编程语言实现解释器。我已经完成了解析器,所以程序得到识别,加载到内存中并准备好执行。该语言是过程性,模拟命令行输入/输出,显然不是事件驱动,就像 Android 中的 Java。

示例程序可能如下所示:

FOR i FROM 1 TO 10
READ Name
PRINT "User ", i, " name: ", Name
END_LOOP

作为 Android 的新手,我不知道 Android 对话框是异步的,因此不能中断执行,正如许多类似问题中所解释的那样。 (1) , (2) , (3) , (4)
因此,我最初认为我会通过显示模态对话框来实现 READ 命令。执行涉及读取用户输入的代码,将需要等待完成,然后才能继续下一行代码。但这不应该像上面的帖子中提到的那样通过对话框来完成。

我发现最“合适”的方法是“保存”整个程序的执行状态,停止执行,然后在用户从对话框输入内容时通过加载最后一个状态开始执行。但这似乎是不可能的,而且对于这样一个简单的任务来说太麻烦了。有没有更简单的方法?

欢迎提出任何建议。

最佳答案

I did not know that Android dialogs are asynchronous, and thus cannot interrupt execution, as explained in dozens of similar questions

所有 Android UI 都是异步的。

I initially thought I would implement READ commands by showing a modal Dialog.

这本质上没有错。但是,READ 需要暂停解释器的执行,直到用户完成对话。

Is there an easier way?

即兴...

第 1 步:在后台线程上运行解释器。

第 2 步:让您的 READ 代码在主应用程序线程上调用您的对话框,然后在 Semaphore 上阻塞以阻塞您的后台线程。

第 3 步:让您的对话代码通过某种方式将用户输入的结果传递给您的解释器,然后在对话消失时释放信号量

第 4 步:您的解释器代码继续。

关于java - 在 Android 中接收用户输入然后继续执行的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40819009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com