getCurrentInputConnection

getCurrentInputConnection

我正在尝试实现自己的android输入法。在InputMethodService.onStartInputView中,我保存由InputConnection返回的对getCurrentInputConnection的引用,以供以后使用。在keyup事件中,我调用InputConnection.commitText将一些文本提交到屏幕上。
但我发现,在一些应用程序中,函数调用没有任何效果(屏幕上没有显示任何内容),而
软键盘sdk示例运行良好。唯一的区别是示例使用getCurrentInputConnect提交字符。另外,我的应用程序中的声明是错误的

mCurrentInputConnection == Ime.getCurrentInputConnection()

在ime服务的source code中有两个inputconnection成员:minputconnection和mstartedinputconnection,getCurrentInputConnection可以返回其中一个。
我知道我可以每次调用getCurrentInputConnection,但我只是想避免性能问题的函数调用(因为调用太频繁)。那么有没有其他方法来获得正确的输入连接呢?(这两者有什么区别?)

最佳答案

您的单个InputConnection实例停止工作,因为一旦您打开其他应用程序或更改edittext字段,一个新的客户端已与您的ime绑定,因此输入连接已更改。
如果要避免多次调用getCurrentInputConnection()对象,则每次更改时都可以存储InputConnection对象。它的回调是onBindInput

07-24 19:34