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

时间:2016-11-26 13:49:14

标签: java android dialog user-input

我正在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命令。执行涉及用户读取输入的代码,需要等待才能完成,然后再转到下一行代码。但是这不应该通过对话来完成,如上面的帖子所述。

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

欢迎任何建议。

1 个答案:

答案 0 :(得分:1)

  

我不知道Android对话框是异步的,因此无法中断执行,正如许多类似问题所解释的那样

所有Android UI都是异步的。

  

我最初认为我会通过显示模态对话框来实现READ命令。

这没有任何内在错误。但是,READ需要暂停执行解释器,直到用户完成对话框。

  

有更简单的方法吗?

脱下袖口......

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

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

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

步骤#4:您的口译员代码仍在继续。