我正在为Android中的中等简单/基本的编程语言实施解释器。我已经完成了解析器,因此可以识别程序,加载在内存中并准备执行。该语言为 Procedistural ,模拟命令行输入/输出和显然不像Android中的Java一样。
样本程序可能看起来像这样:
FOR i FROM 1 TO 10
READ Name
PRINT "User ", i, " name: ", Name
END_LOOP
在Android中相对较新,我不知道Android对话是异步的,因此不能中断执行,正如数十个类似问题所述。(1),(2),(3),(4)
因此,我最初认为我将通过显示模态对话框来实现READ
命令。执行涉及读取输入的代码,将需要等待等待才能完成,然后再进入下一行代码。但这不应使用对话框进行,如上述文章中所述。
我发现,最"合适的"方法是"保存"整个程序的执行状态,停止执行,然后在用户输入对话框中输入某些内容时通过加载最后一个状态开始执行。但这似乎是不可能的,对于这么简单的任务来说,这太麻烦了。有一个简单的方法吗?
欢迎任何建议。
我不知道Android对话是异步的,因此无法中断执行,如数十个类似问题所述
中所述
所有Android UI都是异步的。
我最初以为我会通过显示模态对话框来实现读取命令。
这没有本质上的错误。但是,READ
需要暂停您的解释器执行,直到用户完成对话框为止。
有一种更简单的方法吗?
袖口...
步骤#1:在背景线程上运行解释器。
步骤#2:让您的READ
代码在主应用程序线程上调用您的对话框,然后在Semaphore
上阻止您的背景线程。
步骤#3:让您的对话框代码通过某些方式获取用户输入的结果,然后在对话框消失时释放Semaphore
。
步骤#4:您的解释器代码继续。