Dear Android Team, I found that there is some problem in input method feature. When we switch between two keyboards say "Android keyboard" and "Japanese Keyboard". This switch is not happening. Only at the first time switch is proper, next time onwards its not working. I found that the problem lies because of variable "mCurSeq" present in inputMethodManagerService.java file . This current binding sequence number, is incremented every time whenever there is a new bind performed. And, it is getting incremented twice every time a new input method is selected i.e. when we swicth between two keybaords. On the first increment its value is getting stored in "mBindSequence" variable which is present in inputMehodManager.java file. So, "mBinderSequence" value is one less than "mCurSeq". In the file inputMethodManager.java the value of "mCurSeq" and "mBinderSequence" is getting compared as shown in the following code
case MSG_UNBIND: ..... if (mBindSequence == sequence) // sequence is mCurSeq { if (false) { // XXX the server has already unbound! if (mCurMethod != null && mCurrentTextBoxAttribute != null) { try { mCurMethod.finishInput(); } catch (RemoteException e) { Log.w(TAG, "IME died: " + mCurId, e); } } } ..... ..... .... } The if condition is becoming false and because of this keybaord is not refreshing. Please tell me the reason to use sequence number technique, because it is not workinh fine here. I have fixed the problem, but I want to understand the reason to use sequence number. Why can't we use a constant sequence number as done in case of MSG_SHOW_SOFT_INPUT case in handlemessage function in inputMethodManagerService.java file. Thanks & Regards Rakesh Kumar -- unsubscribe: android-porting+unsubscr...@googlegroups.com website: http://groups.google.com/group/android-porting