当我输入我正在开发的应用程序时,偶尔会有重复的输入字符(我没有输入),包括“输入”键将被重复(因此发送我的命令额外一两次) 。输入总是只重复一次或两次,可能只是额外的三次。重复有时需要500-750毫秒,但有时候要快得多。
我正在为我的平板电脑制作Android应用。我现在几乎已经重写了应用程序的每个部分,试图找到导致错误的原因。我有一个EditText的子类,我输入。最初我在EditText的子类中实现了OnKeyListener接口。我目前正在覆盖Activity本身内的“dispatchKeyEvent”来处理关键事件。我这样做是为了当用户按下Enter键时,例如,它将发送命令,然后调用输入的“selectAll()”以准备用户键入另一个命令。无论我是在自定义的EditText小部件中实现OnKeyListener接口,还是在活动中覆盖“dispatchKeyEvent”,我都遇到了同样的错误。
我正在使用应用程序中的位图,并且每次垃圾收集后堆大约90%已满,这种情况经常发生。我不知道问题是否与内存有关 - 似乎不太可能,因为如果需要更多空间,堆就会增长。
当我使用该应用程序时,我输入蓝牙键盘。也许蓝牙驱动程序可能会引入一些问题,但这个错误很少发生在其他应用程序中(我想我发现它只发生在Chrome中几次)。它发生在可能进入我的应用程序的大约1%的击键中(这很常见,因为使用这个应用程序就是打字)。
每次我从应用程序中选择alt-tab来检查LogCat时,我都会收到一些IInputConnectionWrapper警告。它表示“非活动InputConnection上的beginBatchEdit”以及其他2个类似的消息。我不认为警告与问题有关,但我不确定。
任何人都有可能导致这个错误的预感?或者任何人都知道如何隔离bug并找出它的来源?我试图下载一些蓝牙键盘“助手”应用程序,其中没有一个改变任何东西。我已经尝试在我的清单中为我的应用程序标记设置'android:largeHeap =“true”',这不会导致堆很大(使用minSdk 8和targetSdk 11)。
答案 0 :(得分:0)
您无需覆盖dispatchKeyEvent
或其他任何内容来处理EditText
上的Enter键。相反,请正确设置android:imeOptions操作(比如说actionSend
键盘上的“发送”按钮),然后将Activity
注册为OnEditorActionListener,这会获得回调每当用户点击操作按钮或点击进入EditText
。
答案 1 :(得分:0)
问题在于蓝牙键盘本身。它适用于Mac,而非Android。我有一个新的键盘,问题解决了。