我正在尝试实现自己的Android IME。在InputMethodService.onStartInputView
中,我保存了对InputConnection
返回的getCurrentInputConnection
的引用,以供日后使用。在keyup事件中,我调用InputConnection.commitText
将一些文本提交到屏幕上。
但我发现在某些应用程序中,该函数调用没有任何效果(屏幕上没有任何内容)而是
softKeyBoard sdk示例效果很好。唯一的区别是示例使用getCurrentInputConnect
来提交字符。此外,我的应用中的语句为 false
mCurrentInputConnection == Ime.getCurrentInputConnection()
在source code的IME服务中,有两个InputConnection成员:mInputConnection和mStartedInputConnection,getCurrentInputConnection
可能返回。
我知道每次都可以调用getCurrentInputConnection
,但我只是想避免函数调用性能问题(因为这会被调用太频繁)。那么有没有其他方法来获得正确的 InputConnection? (这两者有什么区别?)
答案 0 :(得分:0)
InputConnection
的单个实例停止工作,因为一旦打开其他应用程序或更改editText字段,新客户端已绑定到您的IME,因此输入连接已更改。
如果您想避免多次调用getCurrentInputConnection()
,那么每次更改时都可以存储InputConnection
个对象。它的回调是onBindInput。