開発中のアプリに入力すると、「Enter」キーを含む(入力しなかった)入力文字が繰り返されることがあります(したがって、コマンドを1〜2回余分に送信します)。入力は常に1回または2回余分に繰り返されますが、まれに3回余分に繰り返されることもあります。繰り返すのに500〜750ミリ秒かかることもありますが、はるかに速いこともあります。
タブレット用のAndroidアプリを作成しています。バグの原因を突き止めるために、アプリのほぼすべての部分を書き直しました。入力するEditTextのサブクラスがあります。もともと私はEditTextのサブクラスにOnKeyListenerインターフェースを実装していました。現在、キーイベントを処理するために、アクティビティ自体の中で「dispatchKeyEvent」をオーバーライドしています。これは、たとえば、ユーザーがEnterキーを押したときにコマンドを送信し、入力の「selectAll()」を呼び出して、ユーザーが別のコマンドを入力できるようにするためです。カスタマイズされたEditTextウィジェットでOnKeyListenerインターフェイスを実装する場合でも、アクティビティで「dispatchKeyEvent」をオーバーライドする場合でも、まったく同じバグが発生しました。
アプリでビットマップを使用していますが、ガベージコレクションが行われるたびにヒープが約90%いっぱいになりますが、これは非常に頻繁に発生します。問題がメモリに関連しているかどうかはわかりません。より多くのスペースが必要な場合はヒープが大きくなるため、そうは思われません。
アプリを使用するときは、Bluetoothキーボードを入力します。おそらくBluetoothドライバーはいくつかの問題を引き起こす可能性がありますが、他のアプリでバグが発生することはめったにありません(Chromeで発生するのは数回だけだと思います)。これは、私のアプリに入るキーストロークの約1%で発生します(このアプリを使用するのは入力するため、非常に頻繁に発生します)。
LogCatをチェックするためにアプリをAlt-Tabキーを押すたびに、IInputConnectionWrapperの警告が表示されます。「非アクティブなInputConnectionでbeginBatchEdit」と他の2つの同様のメッセージが表示されます。警告が問題に関連しているとは思いませんが、確かにはわかりません。
誰もがこのバグを引き起こす可能性があるものについての予感がありますか?または、バグを特定してどこから来ているのかを知る方法を知っている人はいますか?Bluetoothキーボードの「ヘルパー」アプリをダウンロードしようとしましたが、どれも何も変わりませんでした。マニフェストのアプリケーションタグに「android:largeHeap = "true"」を設定しようとしましたが、ヒープが大きくなることはありませんでした(minSdk8とtargetSdk11を使用)。