我正在尝试实现自己的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。