InputMethodService中的两个InputConnection变量?

时间:2014-08-25 06:00:06

标签: android android-input-method

我正在尝试实现自己的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? (这两者有什么区别?)

1 个答案:

答案 0 :(得分:0)

InputConnection的单个实例停止工作,因为一旦打开其他应用程序或更改editText字段,新客户端已绑定到您的IME,因此输入连接已更改。

如果您想避免多次调用getCurrentInputConnection(),那么每次更改时都可以存储InputConnection个对象。它的回调是onBindInput