From 621dcbc31c2b9c481f9be462a69d3d37afc5d8ca Mon Sep 17 00:00:00 2001 From: Jean Chalard Date: Tue, 24 Dec 2013 16:30:55 +0900 Subject: [PATCH] [IL34] Introduce InputLogicHandler Bug: 8636060 Change-Id: I5d08ed5d69cdb03bd188e36b7014de03f04fa72f --- .../latin/inputlogic/InputLogic.java | 6 +++ .../latin/inputlogic/InputLogicHandler.java | 49 +++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 java/src/com/android/inputmethod/latin/inputlogic/InputLogicHandler.java diff --git a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java index df34687e3..fe5b69f6c 100644 --- a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java +++ b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java @@ -71,6 +71,8 @@ public final class InputLogic { // TODO : Remove this member when we can. private final LatinIME mLatinIME; + private InputLogicHandler mInputLogicHandler; + // TODO : make all these fields private as soon as possible. // Current space state of the input method. This can be any of the above constants. public int mSpaceState; @@ -105,6 +107,7 @@ public final class InputLogic { mWordComposer = new WordComposer(); mEventInterpreter = new EventInterpreter(latinIME); mConnection = new RichInputConnection(latinIME); + mInputLogicHandler = null; } /** @@ -119,12 +122,15 @@ public final class InputLogic { * @param restarting whether input is starting in the same field as before. */ public void startInput(final boolean restarting) { + mInputLogicHandler = new InputLogicHandler(); } /** * Clean up the input logic after input is finished. */ public void finishInput() { + mInputLogicHandler.destroy(); + mInputLogicHandler = null; } /** diff --git a/java/src/com/android/inputmethod/latin/inputlogic/InputLogicHandler.java b/java/src/com/android/inputmethod/latin/inputlogic/InputLogicHandler.java new file mode 100644 index 000000000..d611e4bf8 --- /dev/null +++ b/java/src/com/android/inputmethod/latin/inputlogic/InputLogicHandler.java @@ -0,0 +1,49 @@ +/* + * Copyright (C) 2013 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.inputmethod.latin.inputlogic; + +import android.os.Handler; +import android.os.HandlerThread; +import android.os.Message; + +/** + * A helper to manage deferred tasks for the input logic. + */ +// TODO: Make this package private +public class InputLogicHandler implements Handler.Callback { + final Handler mNonUIThreadHandler; + + public InputLogicHandler() { + final HandlerThread handlerThread = new HandlerThread( + InputLogicHandler.class.getSimpleName()); + handlerThread.start(); + mNonUIThreadHandler = new Handler(handlerThread.getLooper(), this); + } + + public void destroy() { + mNonUIThreadHandler.getLooper().quit(); + } + + /** + * Handle a message. + * @see android.os.Handler.Callback#handleMessage(android.os.Message) + */ + @Override + public boolean handleMessage(final Message msg) { + return true; + } +}