diff --git a/java/res/values/strings.xml b/java/res/values/strings.xml
index 7272cfe97..cf7c1c5bd 100644
--- a/java/res/values/strings.xml
+++ b/java/res/values/strings.xml
@@ -223,15 +223,15 @@
Recorded timestamp
- Do not log this session
+ Suspend logging
- Enable session logging
+ Enable logging
Log whole session history
Deleting session log
- Session log deleted
+ Logging temporarily suspended. To disable permanently, go to Android Keyboard Settings
Session log NOT deleted
@@ -240,7 +240,6 @@
Error: Session history NOT logged
Session logging enabled
-
Input languages
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 0f8b6c48c..63aed7f58 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -618,7 +618,6 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
+ ((editorInfo.inputType & InputType.TYPE_TEXT_FLAG_CAP_WORDS) != 0));
}
if (ProductionFlag.IS_EXPERIMENTAL) {
- ResearchLogger.getInstance().start();
ResearchLogger.latinIME_onStartInputViewInternal(editorInfo, mPrefs);
}
if (InputAttributes.inPrivateImeOptions(null, NO_MICROPHONE_COMPAT, editorInfo)) {
@@ -711,7 +710,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
LatinImeLogger.commit();
if (ProductionFlag.IS_EXPERIMENTAL) {
- ResearchLogger.getInstance().stop();
+ ResearchLogger.getInstance().latinIME_onFinishInputInternal();
}
KeyboardView inputView = mKeyboardSwitcher.getKeyboardView();
diff --git a/java/src/com/android/inputmethod/latin/ResearchLog.java b/java/src/com/android/inputmethod/latin/ResearchLog.java
index 1de5cb36a..917ee84a2 100644
--- a/java/src/com/android/inputmethod/latin/ResearchLog.java
+++ b/java/src/com/android/inputmethod/latin/ResearchLog.java
@@ -55,13 +55,14 @@ public class ResearchLog {
final ScheduledExecutorService mExecutor;
/* package */ final File mFile;
- private JsonWriter mJsonWriter = NULL_JSON_WRITER; // should never be null
+ private JsonWriter mJsonWriter = NULL_JSON_WRITER;
private int mLoggingState;
private static final int LOGGING_STATE_UNSTARTED = 0;
- private static final int LOGGING_STATE_RUNNING = 1;
- private static final int LOGGING_STATE_STOPPING = 2;
- private static final int LOGGING_STATE_STOPPED = 3;
+ private static final int LOGGING_STATE_READY = 1; // don't create file until necessary
+ private static final int LOGGING_STATE_RUNNING = 2;
+ private static final int LOGGING_STATE_STOPPING = 3;
+ private static final int LOGGING_STATE_STOPPED = 4;
private static final long FLUSH_DELAY_IN_MS = 1000 * 5;
private static class NullOutputStream extends OutputStream {
@@ -94,11 +95,9 @@ public class ResearchLog {
public synchronized void start() throws IOException {
switch (mLoggingState) {
case LOGGING_STATE_UNSTARTED:
- mJsonWriter = new JsonWriter(new BufferedWriter(new FileWriter(mFile)));
- mJsonWriter.setLenient(true);
- mJsonWriter.beginArray();
- mLoggingState = LOGGING_STATE_RUNNING;
+ mLoggingState = LOGGING_STATE_READY;
break;
+ case LOGGING_STATE_READY:
case LOGGING_STATE_RUNNING:
case LOGGING_STATE_STOPPING:
case LOGGING_STATE_STOPPED:
@@ -111,6 +110,7 @@ public class ResearchLog {
case LOGGING_STATE_UNSTARTED:
mLoggingState = LOGGING_STATE_STOPPED;
break;
+ case LOGGING_STATE_READY:
case LOGGING_STATE_RUNNING:
mExecutor.submit(new Callable